当前位置: 首页 > 知识库问答 >
问题:

如何让我们自己写的命令行支持 npm create?

凌恩
2024-06-22

如何让我们自己写的命令行支持 npm create?
比如 npm create vite /vue....

共有2个答案

袁亦
2024-06-22

当你执行:

> npm create my-starter my-project --args

实际等同于顺序执行了这两条命令:

> npm install -g create-my-starter     # 全局安装 create-my-starter 依赖> create-my-starter my-project --args  # 传参进去给它

所以你的模板包名必须以 create- 开头。

如果是私有包的话,则是:

> npm create @my-scope/my-starter my-project --args# Same As:> npm install -g @my-scope/create-my-starter> @my-scope/create-my-starter my-project --args

剩下就没啥好说的了,跟普通的带 bin 的包一样。入口文件里通过 process.argv 读取命令行传进来的参数就好了。

卫成和
2024-06-22

要让自己的命令行工具支持 npm create,你需要遵循几个步骤来设置你的项目。以下是基本的步骤:

  1. 创建你的模板

    首先,你需要一个模板仓库或目录,其中包含你想要通过 npm create 创建项目的所有文件。这个模板通常包含 package.jsonREADME.md.gitignore 等文件,以及项目的初始代码。

  2. 发布到 npm

    接下来,你需要将这个模板作为一个 npm 包发布。这通常意味着你需要有一个 package.json 文件在模板的根目录下,其中包含了你的包信息(如名称、版本、描述等)。

    注意,对于 npm create 模板,你通常会在 package.json 中添加一个 "bin" 字段,指向一个初始化脚本(但这不是必须的,因为 npm create 有自己的初始化逻辑)。

    然后,你可以使用 npm publish 命令来发布你的包。

  3. 设置 create-<your-package-name>

    为了让 npm create 能够识别你的模板,你的 npm 包名称需要以 create- 开头。例如,如果你的包名称是 my-awesome-template,那么你应该将其重命名为 create-my-awesome-template

  4. 使用 npm init 钩子

    npm create 命令实际上是一个包装器,它使用了 npm init 命令的钩子功能。当你的包被识别为 create- 开头的包时,npm create 会运行 npm init <your-package-name>,并将剩余的命令行参数(如 vitevue)作为参数传递给这个命令。

    在你的 npm 包中,你可以通过提供一个 create.js(或任何你喜欢的名称,只要它在你的 package.json"bin" 字段中指定)脚本来响应这个命令。这个脚本应该接受命令行参数,并根据需要设置和生成项目。

    例如,你的 create.js 脚本可以检查传入的参数(如 vitevue),并根据这些参数选择不同的模板或执行不同的设置步骤。

  5. 测试你的模板

    在发布之前,确保测试你的模板以确保它能够正确地通过 npm create 创建项目。你可以使用 npm create <your-package-name> 命令并传入适当的参数来测试它。

  6. 文档和社区支持

    为你的模板提供清晰的文档和示例,以帮助用户理解如何使用它。此外,考虑在 npm 上为你的包设置一个问题跟踪器,以便用户可以提供反馈和报告问题。

这是一个高级概述,具体的实现细节将取决于你的具体需求和你的模板的复杂性。但是,遵循这些步骤应该可以帮助你开始创建一个支持 npm create 的命令行工具。

 类似资料:
  • 但当我在命令行上运行该命令时,它会抛出以下错误: 我可以成功地运行其他的adb命令,我不知道aapt命令有什么问题。另外,我正在Windows7环境下进行开发。

  • Electron支持的命令行开关. 您可以在app 模块的ready事件生效之前,使用app.commandLine.appendSwitch将它们附加到您的应用程序的主要脚本中: const { app } = require('electron') app.commandLine.appendSwitch('remote-debugging-port', '8315') app.command

  • 让我们Encrypt通过IdenTrust交叉签名得到他们的中间,这应该是个好消息。但是,我在这个命令的输出中找不到这两个: 我知道可以在每台机器上手动添加受信任的CA,但由于我的应用程序应该是免费下载和可执行的,不需要任何进一步的配置,所以我正在寻找“开箱即用”的解决方案。你有好消息告诉我吗?

  • 这页列出了Chrome浏览器和Electron支持的命令行开关. 你也可以在app模块的ready事件发出之前使用app.commandLine.appendSwitch 来添加它们到你应用的main脚本里面: const app = require('electron').app; app.commandLine.appendSwitch('remote-debugging-port', '83

  • Electron支持的命令行开关. 您可以在app 模块的ready事件生效之前,使用app.commandLine.appendSwitch将它们附加到您的应用程序的主要脚本中: const { app } = require('electron') app.commandLine.appendSwitch('remote-debugging-port', '8315') app.command

  • 本文向大家介绍如何让js的filter方法支持大小写?相关面试题,主要包含被问及如何让js的filter方法支持大小写?时的应答技巧和注意事项,需要的朋友参考一下 使用正则表达式即可 写个试试 let searchs = new RegExp(searched, 'i'); 这样searchs就是不区分大小写的了 "i" 在正则里就是 不区分大小写搜索。

  • 在 linkerd Discourse instance 中提出有关配置或故障排除的问题。 在 GitHub issues 中提交 bug 或功能请求。 在我们的 linkerd public Slack 中聊天。 请发送电子邮件至 support@buoyant.io

  • 我正在使用以下代码片段创建一个chrome浏览器- 我在使用Chrome运行测试时遇到了一个错误。该错误显示在启动浏览器的地址栏下方: 您正在使用不受支持的命令行标志--忽略证书错误。稳定和安全将受到影响。 有没有简单的方法让这个消息消失?理想情况下,我想用ruby代码本身来做。