gpt4 book ai didi

node.js - NPM package.json 文件的主要用途是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:47 25 4
gpt4 key购买 nike

我读自here如果人们通过 npm 安装您的项目,则 package.json 文件中的依赖项允许人们安装依赖项-

Finally, the dependencies field is used to list all the dependencies of your project that are available on npm. When someone installs your project through npm, all the dependencies listed will be installed as well. Additionally, if someone runs npm install in the root directory of your project, it will install all the dependencies to ./node_modules.

如果有人不在你项目的根目录下运行 npm install,所有的依赖会被安装到哪里?

此外,如果他们选择通过 Github 克隆该项目怎么办?无论如何它都准备好了,对吧?那么 package.json 文件除了为用户提供有关项目的元数据之外还有什么用途?

最佳答案

Where will all the dependencies be installed to if someone doesn't run npm install in the root directory of your project?

如果你的意思是“如果你在不同的目录中运行命令,它们将安装在哪里”,NPM 将向上搜索父目录,直到找到 package.json,然后安装该文件旁边的 node_modules 文件夹中的依赖项。 IE。它们将始终位于项目根目录中。

Also, what if they choose to clone this project through Github instead? It would be ready to go anyway, right? Then at that point what is the purpose of the package.json file besides giving the user meta data about the project?

不是这样的! Node 项目几乎总是有一个 .gitignore 文件,它明确地将 node_modules 排除在版本控制之外,并期望你在之后运行 npm install下载源代码。

将依赖项放在 GitHub 存储库中的理由很少——只要项目符合 Semantic Versioning 即可。 (绝大多数包都是这样做的),npm install 永远不会导致下载不兼容的版本,如果你绝对需要锁定依赖项的版本,你可以只使用 npm shrinkwrap .

编辑:正如 Matt 的评论非常有帮助地指出的那样,NPM 有几个超越简单元数据的功能 - 我可能最常使用的功能是 Scripts ,它允许您为命令行操作创建特定于项目的别名。

这对我有用的一个例子是运行 Webpack 开发服务器 - 它在 devDependencies 中本地安装到我的项目(你可以使用 --save -dev option when installing a package), 所以如果我手动进行,我将不得不输入以下内容:

"./node_modules/.bin/webpack-dev-server" --inline --hot

坦率地说,这会有点痛苦。相反,我可以将它添加到我的 package.json(注意 node_modules/.bin 在使用 NPM 脚本时会自动添加到系统路径,所以你不需要每次都输入它):

"scripts": {
"dev": "webpack-dev-server --inline --hot"
}

然后我要做的就是:

npm run dev

除了这个简单的用例之外,还有几个“特殊”脚本名称,它们会在某些事件发生时自动调用 - 例如,prepublish 在将包发布到注册表之前运行。

关于node.js - NPM package.json 文件的主要用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com