npm项目配置中文参考文档

一、npm项目使用的文件夹结构npm会在你的电脑上放各种各样的东西,这就是它的工作,这份文件会告诉你它把什么放在什么地方。
1、基本结构
(1)本地安装(默认): 将内容放入当前包根目录的./node_modules中。
(2)全局安装(使用-g): 将内容放入/usr/local或安装节点的任何位置。
(3)如果使用require(),请在本地安装它。
(4)如果要在命令行上运行它,请全局安装它。如果两者都需要,那么可以在两个地方安装它,或者使用npm link。
2、前缀配置
前缀配置默认设置为安装节点的位置。在大多数系统上,这是/usr/local。在Windows上,它是%AppData%\npm。在Unix系统上,它是向上一级的,因为节点通常安装在{prefix}/bin/node而不是{prefix}/node.exe。
当设置全局标志时,npm将内容安装到这个前缀中。未设置时,它使用当前包的根目录,如果包中还没有当前工作目录,则使用当前工作目录。
3、Node模块
包被放入前缀下的node_modules文件夹中。在本地安装时,这意味着您可以require(“packagename”)加载它的主模块,或者require (“packagename/lib/path/to/sub/module”)加载其他模块。
Unix系统上的全局安装转到{prefix}/lib/node_modules。Windows上的全局安装转到{prefix}/node_modules(即没有lib文件夹)。
作用域包的安装方式是相同的,只是它们被分组在相关node_modules文件夹的子文件夹中,并且使用@符号将该作用域前缀的名称组合在一起,例如npm install @myorg/package会将该包放在{prefix}/node_modules/@myorg/package中。有关详细信息,请参见scope。如果您希望需要()一个包,那么在本地安装它。
4、缓存
看到npm-cache。缓存文件存储在~/中。在Posix上使用npm,或者在Windows上使用%AppData%/npm-cache。这由缓存配置参数控制。
5、临时文件
临时文件默认存储在tmp配置指定的文件夹中,该配置默认为Unix上的TMPDIR、tmp或TEMP环境变量,或者/tmp,以及windows上的c:\windows\ TEMP。
每次运行程序时,都会在这个根目录下给临时文件一个惟一的文件夹,并在成功退出时删除。
二、npm配置文件npmrcnpm从命令行、环境变量和npmrc文件中获取配置设置。
npm配置命令可用于更新和编辑用户和全局npmrc文件的内容。
有关可用配置选项的列表,请参见npm-config。
四个相关的文件为:

  1. 每个项目配置文件(/path/to/my/project/.npmrc)
  2. 每个用户配置文件(~/.npmrc)
  3. 全局配置文件($PREFIX/etc/npmrc)npm
  4. 内置配置文件(/path/to/npm/npmrc)
所有npm配置文件都是一个ini格式的key = value参数列表。可以使用${VARIABLE_NAME}替换环境变量。例如:
prefix = ${HOME}/.npm-packages

加载这些文件中的每个文件,并按优先级顺序解析配置选项。例如,userconfig文件中的设置将覆盖globalconfig文件中的设置。
数组值通过在键名后面添加“[]”来指定。例如:
key[] = "first value" key[] = "second value"

三、package-lock.json文件package-lock.json对于npm修改node_modules树或package.json的任何操作,都会自动生成json。它描述生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。
此文件拟提交至来源资料库,并可作以下用途:
  1. 描述依赖关系树的单一表示形式,以确保队友、部署和持续集成能够安装完全相同的依赖关系。
  2. 为用户提供一种工具,让他们可以“穿越”到node_modules以前的状态,而不必提交目录本身。
  3. 通过可读的源代码控制差异,提高树更改的可视性。
  4. 并通过允许npm跳过先前安装包的重复元数据解析来优化安装过程。
关于package-lock.json的一个关键细节package-lock.json是不能发布的,如果在除toplevel包之外的任何地方发现它,它将被忽略。它与np -shrinkwrap共享一种格式。json,本质上是相同的文件,但允许发布。除非部署CLI工具或使用发布过程来生成生产包,否则不建议这样做。
如果两个package-lock。json和npm-shrinkwrap。json存在于包的根目录package-lock中。json将完全被忽略。
package-lock.json文件格式
1、name
这个包的名称是一个包锁,这必须匹配package.json中的内容。
2、version
这个包的版本是一个包锁,这必须匹配package.json中的内容。
3、lockfileVersion
整数版本,从1开始,该文档的版本号为1,在生成这个包-lock.json时使用了该文档的语义。
4、packageIntegrity
这是一个从package.json创建的子资源完整性值。没有对包进行预处理。应该完成json。子资源完整性字符串可以由ssri之类的模块生成。
5、preserveSymlinks
指示安装完成时启用了环境变量NODE_PRESERVE_SYMLINKS。安装程序应该坚持此属性的值与环境变量匹配。
6、dependencies
包名到依赖项对象的映射。依赖对象具有以下属性:
  • version:这是一个唯一标识此包的说明符,应该可以用于获取该包的新副本。
  • integrity:这是该资源的标准子资源完整性。
  • resolved:对于注册表源,这是tarball相对于注册表URL的路径。如果tarball URL与注册表URL不在同一个服务器上,那么这就是一个完整的URL。
  • bundled:如果为真,这是绑定的依赖项,将由父模块安装。在安装时,此模块将在提取阶段从父模块中提取,而不是作为单独的依赖项安装。
  • dev:如果为真,那么这个依赖项要么是顶层模块的开发依赖项,要么是顶层模块的传递依赖项。对于同时是顶层开发依赖项和顶层非开发依赖项的传递依赖项的依赖项,这是错误的。
  • optional:如果为真,则此依赖项要么是顶层模块的可选依赖项,要么是顶层模块的传递依赖项。对于同时是顶层可选依赖项和顶层非可选依赖项的传递依赖项的依赖项,这是错误的。
  • requires:这是模块名称到版本的映射。这是这个模块需要的所有东西的列表,不管它将安装在哪里。版本应该通过常规匹配规则匹配依赖项,要么在依赖项中,要么在比我们更高的级别上。
  • dependencies:这个依赖项的依赖项,就像在顶层一样。
四、package.json文件关于包中需要的内容,您只需要了解这个文档package.json文件。它必须是实际的JSON,而不仅仅是JavaScript对象的文字。本文档中描述的许多行为都受到npm-config中描述的配置设置的影响。
五、shrinkwrap.json文件npm-shrinkwrap.json是由npm-shrinkwrap创建的文件。 它与package-lock.json相同,但有一个主要警告:与package-lock.json不同,发布包时可能包含npm-shrinkwrap.json。
npm-shrinkwrap.json的推荐用例是通过注册表上的发布过程部署的应用程序:例如,用作全局安装或devDependencies的守护程序和命令行工具。 强烈建议图书馆作者不要发布此文件,因为这会阻止最终用户控制传递依赖性更新。
此外,如果package-lock.json和npm-shrinkwrap.json都存在于包根目录中,则将忽略package-lock.json以支持此文件。
【npm项目配置中文参考文档】有关npm-shrinkwrap.json文件格式的完整详细信息和说明,请参阅package-lock.json的手册页。

    推荐阅读