diff --git a/package.json b/package.json index d5732df392..5e18677dd2 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "@nrwl/eslint-plugin-nx": "10.1.1-beta.2", "@nrwl/jest": "10.1.1-beta.2", "@nrwl/node": "10.1.1-beta.2", + "@nrwl/nx-cloud": "^10.1.1", "@nrwl/workspace": "10.1.1-beta.2", "@reduxjs/toolkit": "1.3.2", "@rollup/plugin-babel": "5.0.2", @@ -127,6 +128,7 @@ "cypress": "^4.1.0", "cz-conventional-changelog": "^3.0.2", "cz-customizable": "^6.2.0", + "depcheck": "^1.2.0", "document-register-element": "^1.13.1", "dotenv": "6.2.0", "eslint": "6.8.0", @@ -234,8 +236,7 @@ "webpack-subresource-integrity": "1.1.0-rc.6", "worker-plugin": "3.2.0", "yargs": "15.4.1", - "zone.js": "^0.10.0", - "@nrwl/nx-cloud": "^10.1.1" + "zone.js": "^0.10.0" }, "author": "Victor Savkin", "license": "MIT", diff --git a/packages/cli/package.json b/packages/cli/package.json index 70ed52ef24..55b9294bee 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -29,6 +29,7 @@ "dependencies": { "tmp": "0.0.33", "yargs": "15.4.1", + "yargs-parser": "17.0.0", "@nrwl/tao": "*", "chalk": "2.4.2" } diff --git a/packages/create-nx-workspace/package.json b/packages/create-nx-workspace/package.json index 05c673e409..10dcb0369b 100644 --- a/packages/create-nx-workspace/package.json +++ b/packages/create-nx-workspace/package.json @@ -30,6 +30,8 @@ "@nrwl/workspace": "*", "tmp": "0.0.33", "yargs": "15.4.1", + "yargs-parser": "17.0.0", + "tslib": "^1.9.3", "inquirer": "^6.3.1" } } diff --git a/packages/cypress/package.json b/packages/cypress/package.json index 1ab153076f..be12e8e4f7 100644 --- a/packages/cypress/package.json +++ b/packages/cypress/package.json @@ -38,6 +38,7 @@ "dependencies": { "@angular-devkit/architect": "~0.1000.0", "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", "@cypress/webpack-preprocessor": "~4.1.2", "tree-kill": "1.2.2", "ts-loader": "^5.3.1", diff --git a/packages/eslint-plugin-nx/package.json b/packages/eslint-plugin-nx/package.json index be34fc0d19..3dfeb4cc4d 100644 --- a/packages/eslint-plugin-nx/package.json +++ b/packages/eslint-plugin-nx/package.json @@ -32,6 +32,7 @@ "@typescript-eslint/parser": "^2.19.2" }, "dependencies": { + "@angular-devkit/core": "~10.0.0", "@typescript-eslint/experimental-utils": "^2.19.2" } } diff --git a/packages/jest/package.json b/packages/jest/package.json index be1006a0a0..c8ff5d4e5d 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -37,6 +37,7 @@ "dependencies": { "@angular-devkit/architect": "~0.1000.0", "@angular-devkit/core": "~10.0.0", - "@angular-devkit/schematics": "~10.0.0" + "@angular-devkit/schematics": "~10.0.0", + "rxjs": "^6.5.4" } } diff --git a/packages/linter/package.json b/packages/linter/package.json index 05cee36985..13be784e3d 100644 --- a/packages/linter/package.json +++ b/packages/linter/package.json @@ -27,6 +27,9 @@ "@nrwl/workspace": "*" }, "dependencies": { - "@angular-devkit/architect": "~0.1000.0" + "@angular-devkit/architect": "~0.1000.0", + "glob": "7.1.4", + "minimatch": "3.0.4", + "tslib": "^1.9.3" } } diff --git a/packages/react/package.json b/packages/react/package.json index 7443c7c15c..6b45eecd3f 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -31,6 +31,7 @@ "@nrwl/workspace": "*" }, "dependencies": { + "@angular-devkit/core": "~10.0.0", "@babel/core": "7.9.6", "@babel/preset-react": "7.9.4", "@nrwl/cypress": "*", diff --git a/packages/tao/package.json b/packages/tao/package.json index 94867835ca..5a873b90ab 100644 --- a/packages/tao/package.json +++ b/packages/tao/package.json @@ -34,6 +34,9 @@ "@angular-devkit/architect": "~0.1000.0", "inquirer": "^6.3.1", "minimist": "^1.2.0", - "strip-json-comments": "2.0.1" + "strip-json-comments": "2.0.1", + "semver": "6.3.0", + "tmp": "0.0.33", + "tslib": "^1.9.3" } } diff --git a/packages/web/package.json b/packages/web/package.json index 29afad8446..ad8a37e980 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -78,6 +78,7 @@ "minimatch": "3.0.4", "parse5": "4.0.0", "open": "6.4.0", + "opn": "^5.3.0", "postcss": "7.0.27", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", @@ -107,6 +108,7 @@ "terser-webpack-plugin": "2.3.1", "ts-loader": "5.4.5", "tsconfig-paths-webpack-plugin": "3.2.0", + "tslib": "^1.9.3", "webpack": "4.42.0", "webpack-dev-middleware": "3.7.0", "webpack-merge": "4.2.1", diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 9eb4f2ee64..eb76c709e4 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -52,6 +52,7 @@ "prettier": "^2.0.4" }, "dependencies": { + "@angular-devkit/architect": "~0.1000.0", "@angular-devkit/core": "~10.0.0", "@angular-devkit/schematics": "~10.0.0", "cosmiconfig": "4.0.0", @@ -65,10 +66,14 @@ "strip-json-comments": "2.0.1", "tmp": "0.0.33", "yargs": "15.4.1", + "yargs-parser": "17.0.0", "chalk": "2.4.2", "@nrwl/cli": "*", "axios": "0.19.2", "flat": "^5.0.2", - "minimatch": "3.0.4" + "minimatch": "3.0.4", + "inquirer": "^6.3.1", + "resolve": "1.17.0", + "tslib": "^1.9.3" } } diff --git a/scripts/depcheck.js b/scripts/depcheck.js new file mode 100644 index 0000000000..428389181e --- /dev/null +++ b/scripts/depcheck.js @@ -0,0 +1,64 @@ +const argv = require('yargs') + .usage('Check projects for dependency discrepancies.') + .option('projects', { + alias: 'p', + type: 'array', + description: 'Projects to check', + }) + .option('verbose', { + alias: 'v', + type: 'boolean', + description: 'Run with verbose logging', + }).argv; + +const depcheck = require('depcheck'); +const { readFileSync, readdirSync } = require('fs'); +const path = require('path'); +const chalk = require('chalk'); + +const options = { + skipMissing: false, // skip calculation of missing dependencies + ignorePatterns: ['*.spec*'], +}; + +const packagesDirectory = path.join(__dirname, '..', 'packages'); + +const projects = + argv.projects || + readdirSync(packagesDirectory, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + +projects.forEach((project) => { + const projectPath = path.join(packagesDirectory, project); + const projectPackageJson = JSON.parse( + readFileSync(`${projectPath}/package.json`) + ); + + depcheck( + projectPath, + { ...options, ...{ dependencies: projectPackageJson.dependencies } }, + ({ + dependencies, + devDependencies, + missing, + using, + invalidFiles, + invalidDirs, + }) => { + const keys = Object.keys(missing).sort(); + + if (keys.length > 0) { + console.log( + `\n${chalk.bold.inverse(` ${project.toUpperCase()} `)}\n${chalk.bgRed( + 'Missing' + )}: ${keys.join(` | `)}` + ); + + if (argv.verbose) { + console.log(missing); + } + } + } + ); +}); diff --git a/yarn.lock b/yarn.lock index fda4b3c686..d4ad60b709 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8357,6 +8357,11 @@ dayjs@1.8.28: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.28.tgz#37aa6201df483d089645cb6c8f6cef6f0c4dbc07" integrity sha512-ccnYgKC0/hPSGXxj7Ju6AV/BP4HUkXC2u15mikXT5mX9YorEaoi1bEKOmAqdkJHN4EEkmAf97SpH66Try5Mbeg== +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + debug@*, debug@4, debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -8581,6 +8586,32 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depcheck@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/depcheck/-/depcheck-1.2.0.tgz#4e47caafcad3fc2d4bdefdb7d6e463f4db10721b" + integrity sha512-857OvTMgWm35B+B0feJXbkaQo+sm/xMp2Jw4+dGXVsIdEmy9xyDV+q1T1bMp38bN5FbYTgdeqEn5AS7qxC0ubQ== + dependencies: + "@babel/parser" "^7.10.4" + "@babel/traverse" "^7.10.4" + builtin-modules "^3.1.0" + camelcase "^6.0.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + deps-regex "^0.1.4" + ignore "^5.1.8" + js-yaml "^3.14.0" + json5 "^2.1.3" + lodash "^4.17.19" + minimatch "^3.0.4" + multimatch "^4.0.0" + please-upgrade-node "^3.2.0" + readdirp "^3.4.0" + require-package-name "^2.0.1" + resolve "^1.17.0" + sass "^1.26.10" + vue-template-compiler "^2.6.11" + yargs "^15.4.0" + depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -8596,6 +8627,11 @@ dependency-graph@^0.7.2: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49" integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== +deps-regex@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deps-regex/-/deps-regex-0.1.4.tgz#518667b7691460a5e7e0a341be76eb7ce8090184" + integrity sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ= + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -11158,7 +11194,7 @@ he@1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= -he@1.2.x, he@^1.2.0: +he@1.2.x, he@^1.1.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -11589,7 +11625,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -13082,7 +13118,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.13.1, js-yaml@^3.9.0: +js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.9.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -13219,7 +13255,7 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@2.x, json5@^2.1.0, json5@^2.1.1, json5@^2.1.2: +json5@2.x, json5@^2.1.0, json5@^2.1.1, json5@^2.1.2, json5@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -17827,7 +17863,7 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.4.0: +readdirp@^3.4.0, readdirp@~3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== @@ -18270,6 +18306,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +require-package-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" + integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -18724,7 +18765,7 @@ sass@1.26.5: dependencies: chokidar ">=2.0.0 <4.0.0" -sass@^1.23.0: +sass@^1.23.0, sass@^1.26.10: version "1.26.10" resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760" integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw== @@ -21284,6 +21325,14 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= +vue-template-compiler@^2.6.11: + version "2.6.12" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" + integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -22097,7 +22146,7 @@ yargs@15.3.0: y18n "^4.0.0" yargs-parser "^18.1.0" -yargs@15.4.1: +yargs@15.4.1, yargs@^15.4.0: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==