我是新手,所以请提供指向URL的链接或解释术语,以便我理解。
我已经设法通过终端在Mac OS(10.13.3)上安装'npm',并使用它安装了一些像SASS这样的软件包。
我现在正尝试使用npm安装sass-mq。我想我已经成功安装了它,但是我想对我可能做的事情提出第二个意见,这个意见是不完整的,或者做错了。
最初,按照sass-mq Github页面上的说明,我试图使用:
npm install sass-mq --save
给了我这个错误:
npm WARN saveError ENOENT: no such file or directory, open '/Users/<username>/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/Users/<username>/package.json'
npm WARN <username> No description
npm WARN <username> No repository field.
npm WARN <username> No README data
npm WARN <username> No license field.
+ sass-mq@5.0.0
updated 1 package and audited 1 package in 1.67s
found 0 vulnerabilities
环顾四周,我意识到我打算使用
npm init
..在输入'install sass-mq --save'命令之前。
很酷,做到了。下一个错误是:
package name: (nikhil) sass-mq
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/nikhil/package.json:
{
"name": "sass-mq",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"sass-mq": "^5.0.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
darwin:~ nikhil$ npm install sass-mq --save
npm ERR! code ENOSELF
npm ERR! Refusing to install package with name "sass-mq" under a package
**npm ERR! also called "sass-mq". Did you name your project the same
npm ERR! as the dependency you're installing?**
我认为这是说我不能使用'sass-mq'(这是包的名称,作为我在本地机器上安装的本地包(?)的名称。{{ 3}}
所以我只是尝试了这个:
**package name: (sass-mq) media-queries-nikhil**
version: (1.0.0)
description:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/nikhil/package.json:
它似乎工作正常。
我的问题是:这是我应该这样做的正确方法吗?你通常如何做到这一点?
另外,我收到这些警告 - 可以忽略它们吗?
npm WARN media-queries-nikhil@1.0.0 No description
npm WARN media-queries-nikhil@1.0.0 No repository field.
我正在创建这个问题,所以像我这样寻找类似问题答案的其他人可以找到解释,而不仅仅是他们需要解决问题的命令。我发现了一些类似的问题,但实际上并没有解释发生了什么以及为什么。
感谢阅读,我真的很感激任何帮助:)
答案 0 :(得分:3)
TL; DR:您可以这样做,也不必担心那些警告。
要进一步了解npm为何存在及其运行方式,请继续阅读。
npm代表节点软件包管理器。软件包是节点生态系统的基本组成部分-它们的存在是为了让您可以使用其他人的解决方案来解决常见问题。
但是,这可能会非常令人困惑,因为,因为这是一个开放源代码社区,所以它们都在不同的时间由不同的人发布。另外,您使用的两个不同的软件包实际上可能取决于您完全不了解的第三个软件包, ,并且甚至可能需要该软件包的不同版本。 < / p>
您已经看到,这有可能变得非常混乱。
npm可帮助您以更易于管理和思考的方式处理这些“依赖关系”,但是使用npm并非必需-您可以编写一个节点应用程序,在其中自己组织所有这些不同的文件。但是,这将变得非常混乱,很快,因此至少在99%的情况下并没有真正的优势。还有其他的包管理器-我个人使用yarn,但是他们都试图做类似的事情,因此选择主要是优先考虑的问题,不在本讨论的范围之内。
因此,当您开始一个新项目时,键入npm init
,这将告诉npm在名为package.json的文件夹中创建一个文件,该文件将帮助您组织这些依赖项。 package.json将保存有关您自己的应用程序的信息(本身就是一个程序包),以及您告诉npm您将在自己的项目中将其用作依赖项的程序包的信息。这就是为什么它会问您所有关于软件包名称和描述的问题,以便如果您发布它,人们将知道与谁联系,它做什么,它是什么版本等。
认真考虑这一点很重要,如果您实际上打算发布您的软件包,这对于网站来说是不太可能的,但在制作图书馆时就很可能。但是,正如您已经发现的那样,程序包应该具有唯一的名称,这就是为什么您应该对您的程序包进行一些个性化的命名的原因,这样就不会像尝试命名程序包时那样出现命名冲突软件包与以后要尝试安装的软件包相同。
因此,让我们创建我们自己的软件包,并安装我们的第一个依赖项(记住,这只是另一个软件包)。我将选择时间戳作为依赖项,因为它既好又小。
首先,将创建您的项目目录。这只是一个空的新目录。我们称之为ts
。从ts目录中,在终端中输入npm init
并回答其问题(尽管我通常只按回车键即可),然后在目录中查找,您将看到package.json文件。打开文件,您将看到所有您的软件包信息。目前就是这样。
因此,现在返回命令行并键入npm install time-stamp
。完成思考后,再次打开package.json,您将在“依赖项”列表中看到引用的时间戳。 (从npm 5开始,不再需要使用--save
选项。npm现在将其作为默认值。What is the --save option for npm install?)
在目录内部,您还将看到另一个名为package-lock.json的文件和一个名为node_modules的目录。
node_modules目录将包含一个名为时间戳的目录,其中包含使时间戳生效的所有代码。您可能不需要经常查看此处,但是可以查看,如果您查看时间戳目录,您会发现它具有自己的package.json!打开它,看看,它本身具有安装所需的所有信息。您会注意到它没有任何依赖关系,但是如果有,它们将与所有 其 依赖关系一起安装在您的node_modules中。 他们的 依赖项...和 他们的... 如果您想了解这一点,请尝试安装测试框架同样,只需npm install jest
。
希望现在整个事情开始变得有意义了。
锁定文件稍微复杂一些。它的作用是确保在将项目部署到新系统时使用完全相同的依赖项集。它之所以需要这样做,是因为npm组织事物的方式可能取决于最新的发行版等,如果您尝试部署应用程序会很烦人,但由于您的依赖项表现出不同的行为而无法正常工作。开发环境中的方法!
说了这么多,基本上在这个阶段您可以忽略它!这是npm的重要组成部分,但是除非您真的知道自己在做什么,否则不应该直接对其进行编辑。
安装依赖项后,您就可以在项目中的任何地方{strong> require
或import
,而不必担心有关将其定向到目录结构中的正确路径的信息。只需require('time-stamp')
,它就可以正常工作!
最后,为了达到这一目标做得很好,值得一提的是全局安装。使用-g
选项(即npm install time-stamp -g
)意味着依赖项将安装在计算机上某个中央的node_modules目录中,而不是安装在项目的node_modules文件夹中。但是,您仍然需要将其链接到您的项目(这样它最终会作为package.json中的依赖项),您可以通过键入npm link time-stamp
来实现。就我个人而言,我希望所有模块都在我的项目中是本地的,但这再次取决于您的用例,并在一定程度上取决于个人喜好。
这一切都意味着package.json和锁文件的组合完美表示了node_modules中所有文件,这意味着您 不需要它们在您的git(或其他存储库)中。 。您可以将存储库下拉至新服务器,只需输入npm install
,然后将其从然后上网。由于您的依赖项涉及所有文件,因此在您拥有大型项目时,这变得尤为重要,但是从第一天开始,将'node_modules'添加到您的.gitignore是一个好习惯。但是我开始摆脱话题,所以也许我应该在这里结束...
这仅是一个基本的介绍,因此我将其保持相当简单,并且我不想创建深入的教程,但是如果您需要澄清我的观点,随时发表评论,如果可以的话,我会进行修改!
答案 1 :(得分:2)
npm WARN saveError ENOENT:没有这样的文件或目录,请打开'/Users/{username}/package.json'
您没有package.json>使用> doc <- officer::ph_with(doc, value, location = quo(ph_location(left = 1, top = 2, width = 6, height = 4)))
Error in quo(ph_location(left = 1, top = 2, width = 6, height = 4), x = list( :
unused arguments (x = list("C:\\Users\\user1234567\\AppData\\Local\\Temp\\19\\RtmpmorLmI\\file11d0c51f02a5f", list("{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}", NA), <environment>, <environment>, <environment>, <environment>, <environment>, list(c("dc", "dc", "dc", "cp", "dc", "cp", "cp", "dcterms", "dcterms", "cp", "title", "subject", "creator", "keywords", "description", "lastModifiedBy", "revision", "created", "modified", "category", "", "", "", "", "", "", "", " xsi:type=\"dcterms:W3CDTF\"", " xsi:type=\"dcterms:W3CDTF\"",
"", "", "", "", "", "", "David Gohel", "3", "2017-02-13T16:18:36Z", "2017-05-26T11:05:44Z", ""), c("http://schemas.openxmlformats.org/package/2006/metadata/core-properties", "http://purl.org/dc/elements/1.1/", "http://purl.org/dc/dcmitype/", "http://purl.org/dc/terms/", "http://www.w3.org/2001/XMLSchema-instance")), 1), layout = "Title and Content", master = "Office Theme")
您在package.json所在的文件夹中错误的目录> npm init
,如下所示:
cd
npm WARN media-queries-nikhil@1.0.0没有描述
npm WARN media-queries-nikhil@1.0.0没有存储库字段。
Abulifa的answer解释说,因为您的项目可以作为其自己的npm软件包发布。在这种情况下,这些警告将有助于警告您package.json缺少某些字段。
如果您知道您永远不会将其发布为npm软件包,并且希望隐藏这些警告,请将其添加到package.json中:
cd C://Dev/MySolution/MyWebProject
答案 2 :(得分:1)
您的项目名称不能等于要安装的软件包名称。
使用json包重命名您的项目,然后重试或再次尝试 npm init 并使用其他名称。
答案 3 :(得分:1)
我在运行时遇到了相同的问题:
npm install -g @ vue / cli
经过大量研究和实验,唯一起作用的是:
npm install -g @ vue / cli @ latest
答案 4 :(得分:1)
问题:
0 => {#1235
+"vendor_id": 1
+"major_name": freeport
+"categori": gold
+"vendor_status": active
}
1 => {#1222
+"vendor_id": 1
+"major_name": aqua
+"categori": water
+"vendor_status": active
}
2 => {#1222
+"vendor_id": 1
+"major_name": samsung
+"categori": electronic
+"vendor_status": nonactive
}
失败,并出现以下错误
npm install
原因
npm WARN saveError ENOENT: no such file or directory, open '.../package.json'' error
在您所在的npm install
中将需要package.json
,但缺少。
解决方案
假设有2个目录:
current directory
那么,C:\dir1_p\ <--------- package.json exists
C:\dir2\ <--------- package.json does not exist
cd C:\dir1_p\
npm intall <---------- PASS, since package.json is present
cd C:\dir2\
npm intall <---------- ERROR, since package.json is Not present (this was my problem)
做完后您是否在正确的目录中?
情况1::如果您位于错误的目录中,npm install
到存在cd
的目录中,然后运行package.json
情况2::如果您位于正确的目录中,然后运行npm install
并按npm init
键直到完成,这将在当前目录中创建ENTER
目录,现在运行package.json
希望这对某人有帮助。
答案 5 :(得分:0)
关闭项目并重新打开它,这将解决问题
答案 6 :(得分:0)
运行以下命令:
npm init -y
这将创建 package.json 文件,您可以在以后使用适当的信息进行编辑。
参考:https://www.digitalocean.com/community/questions/npm-warn-saveerror-enoent-package-json-not-found