为什么全局npm包没有用于模块依赖?

时间:2018-01-07 01:05:54

标签: node.js typescript npm npm-install npm-scripts

我已经在全球范围内安装了我的打字稿和ts节点。

我有一个如下所示的package.json文件,当我运行npm test时,一切正常(注意:正如您所见,ts-node和{{1在这种情况下安装为本地模块)

typescript

但是,如果我从package.json中取出两个两个模块(并从我的./mode_modules中删除两个包),即{ "name": "two_sum", "version": "1.0.0", "description": "two sum problem solver", "main": "main.js", "scripts": { "test": "./node_modules/.bin/mocha --compilers ts:ts-node/register ./test/*.spec.ts" }, "devDependencies": { "chai": "^4.1.2", "mocha": "^4.1.0", "ts-node": "^4.1.0", "typescript": "^2.6.2" } } ts-node未在本地安装,我得到了像这样的错误:

typescript

以下是我的问题:为什么我需要在本地安装这两个软件包?为什么全局包可以解决依赖性?

1 个答案:

答案 0 :(得分:3)

代码运行时,全局安装的软件包不参与解析。

这是因为项目(由package.json的存在表示)不知道全局安装的内容。

全球安装的软件包与环境有关,而与项目无关。

如果在解决方案中使用了全局安装的软件包,那么项目可能在您的环境中工作,但在其他环境中不起作用。

这将使您的项目的可执行性不可靠(或换句话说,耦合或依赖于您的环境)。

现在,只为CLI工具安装全局包。