阅读(187) (9)

npm 初始化 init

2021-09-06 12:00:16 更新

创建 package.json 的文件

概要

npm init [--force|-f|--yes|-y|--scope]
npm init <@scope> (same as `npx <@scope>/create`)
npm init [<@scope>/]<name> (same as `npx [<@scope>/]create-<name>`)

描述

npm init <initializer> 可用于设置新的或现有的 npm 包。

本例中的initializer是一个名为create-<initializer>的 npm 包,它将由npm exec安装,然后执行其主bin —— 大概是创建或更新package.json并运行任何其他与初始化相关的操作。

初始化命令转化为对应的npm exec操作如下:

  • npm init foo -> npm exec create-foo
  • npm init @usr/foo -> npm exec @usr/create-foo
  • npm init @usr -> npm exec @usr/create

如果省略初始值设定项(仅通过调用npm init),初始值将回退到传统的初始行为。它会问你一堆问题,然后为你写一个package.json。它将尝试根据现有字段、依赖项和所选选项做出合理的猜测。它是严格相加的,因此它将保留已设置的任何字段和值。你也可以使用 -y/--yes完全跳过问卷。如果省略了--scope,它将创建一个作用域包。

转发附加选项

任何其他选项将直接传递给命令,因此npm init foo -- --hello将映射到 npm exec --create-foo --hello.

为了更好地说明选项将直接传递给命令,这里有一个更先进的示例,显示了传递给npm cli和 create 包的选项,以下两个命令是等效的:

npm init foo -y --registry=<url> -- --hello -a
npm exec -y --registry=<url> -- create-foo --hello -a

例子

使用以下命令创建一个新的基于 React 的项目create-react-app

$ npm init react-app ./my-react-app

esm使用create-esm以下命令创建一个新的兼容包:

$ mkdir my-esm-lib && cd my-esm-lib
$ npm init esm --yes

使用传统的初始命令生成一个普通的旧的package.json

$ mkdir my-npm-pkg && cd my-npm-pkg
$ git init
$ npm init

生成而不问任何问题:

$ npm init -y

工作区支持

可以使用workspaceconfig 选项在项目中创建新工作区 。使用npm init -w <dir>cli 时,将创建预期的文件夹和样板,同时还添加对项目package.json "workspaces": []属性的引用,以确保正确设置新生成的工作区。 给定一个没有工作区的项目,例如:

.
+-- package.json

您可以使用旧的 init 生成一个新的工作区:

$ npm init -w packages/a

这将生成一个新文件夹和package.json文件,同时还会更新您的顶层package.json以添加对这个新工作区的引用:

.
+-- package.json
`-- packages
   `--a
       `--package.json

工作空间 init 也支持该npm init <initializer> -w <dir> 语法,遵循本页初始描述部分中先前解释的相同规则集 。与之前使用 创建基于 React 的新项目的示例类似create-react-app,以下语法将确保将新的 React 应用程序创建为项目中的嵌套工作区,并配置你package.json以识别它:

npm init -w packages/my-react-app react-app 。

这将确保按预期生成你的反应应用程序,要记住的一个重要考虑因素npm exec是它将在该工作区新创建的文件夹的上下文中运行,这就是为什么在本示例中初始化程序使用初始值设定项名称后跟一个点来表示该上下文中的当前目录,例如react-app .::

.
+-- package.json
`-- packages
   +-- a
   | `--package.json
   `-- my-react-app
       +-- README
       +-- package.json
       `——……

配置

yes

  • 默认值:null
  • 类型:nullBoolean

自动对 npm 可能在命令行上打印的任何提示回答yes

force

  • 默认值:false
  • 类型:Boolean

删除各种针对不幸副作用、常见错误、不必要的性能下降和恶意输入的保护措施。

  • 允许在全局安装中破坏非 npm 文件。
  • 允许npm version命令在不干净的 git 存储库上工作。
  • 允许删除缓存文件夹npm cache clean
  • 允许安装engines声明要求不同版本的 npm 的包。
  • 允许安装engines声明要求不同版本 的包node,即使--engine-strict已启用。
  • 允许npm audit fix在你声明的依赖范围之外安装模块(包括 SemVer 主要更改)。
  • 允许取消发布已发布包的所有版本。
  • 允许在根项目中安装冲突的 peerDependencies。
  • 在npm初始化期间隐式设置--yes
  • 允许删除 npm pkg 中的现有值。

如果你还不清楚自己要做什么,强烈建议你不要使用此选项!

workspace 工作区

  • 默认:
  • 类型:String(可多次设置)

允许在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。 workspace配置的有效值为:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择所有嵌套工作区)

npm init命令设置时,可以将其设置为尚不存在的工作区的文件夹,以创建该文件夹并将其设置为项目中的全新工作区。

此值不会导出到子进程的环境中。

workspaces 工作区

  • 默认值:false
  • 类型:Boolean

启用在所有已配置工作区的上下文中运行命令。

此值不会导出到子进程的环境中。