如何让我们自己写的命令行支持 npm create?
比如 npm create vite /vue....
当你执行:
> 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
读取命令行传进来的参数就好了。
要让自己的命令行工具支持 npm create
,你需要遵循几个步骤来设置你的项目。以下是基本的步骤:
创建你的模板
首先,你需要一个模板仓库或目录,其中包含你想要通过 npm create
创建项目的所有文件。这个模板通常包含 package.json
、README.md
、.gitignore
等文件,以及项目的初始代码。
发布到 npm
接下来,你需要将这个模板作为一个 npm 包发布。这通常意味着你需要有一个 package.json
文件在模板的根目录下,其中包含了你的包信息(如名称、版本、描述等)。
注意,对于 npm create
模板,你通常会在 package.json
中添加一个 "bin"
字段,指向一个初始化脚本(但这不是必须的,因为 npm create
有自己的初始化逻辑)。
然后,你可以使用 npm publish
命令来发布你的包。
设置 create-<your-package-name>
为了让 npm create
能够识别你的模板,你的 npm 包名称需要以 create-
开头。例如,如果你的包名称是 my-awesome-template
,那么你应该将其重命名为 create-my-awesome-template
。
使用 npm init
钩子
npm create
命令实际上是一个包装器,它使用了 npm init
命令的钩子功能。当你的包被识别为 create-
开头的包时,npm create
会运行 npm init <your-package-name>
,并将剩余的命令行参数(如 vite
或 vue
)作为参数传递给这个命令。
在你的 npm 包中,你可以通过提供一个 create.js
(或任何你喜欢的名称,只要它在你的 package.json
的 "bin"
字段中指定)脚本来响应这个命令。这个脚本应该接受命令行参数,并根据需要设置和生成项目。
例如,你的 create.js
脚本可以检查传入的参数(如 vite
或 vue
),并根据这些参数选择不同的模板或执行不同的设置步骤。
测试你的模板
在发布之前,确保测试你的模板以确保它能够正确地通过 npm create
创建项目。你可以使用 npm create <your-package-name>
命令并传入适当的参数来测试它。
文档和社区支持
为你的模板提供清晰的文档和示例,以帮助用户理解如何使用它。此外,考虑在 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" 在正则里就是 不区分大小写搜索。