在本文中,我们分析 create-next-app 如何验证您的项目名称。
validate: (name) => { const validation = validateNpmName(basename(resolve(name))) if (validation.valid) { return true } return 'Invalid project name: ' + validation.problems[0] },
您是否尝试过在使用 create-next-app 命令时使用空格来命名您的项目?如果您这样做了,您的项目中将不允许有空格,因为它在命名您的项目时遵循一定的原则。
那么这些命名约定规则是什么呢?
如果你检查这个create-next-app/index.ts,它会调用一个名为validateNpmName的函数。这是从 helpers/validate-pkg.ts
导入的这个函数很简单,调用一个名为 validateProjectName 的函数,该函数是从 validate-npm-package-name 导入的。
文档说,如果名称有效,您将得到以下对象:
{ validForNewPackages: true, validForOldPackages: true }
什么使名称有效?我们再检查一下文档。文档提供了这些命名规则:
包名长度应大于零
包名中的所有字符必须为小写,即不允许使用大写或大小写混合
包名称可以由连字符组成
包名称不得包含任何非 url 安全字符(因为名称最终是 URL 的一部分)
包名称不应以 .或 _
包名不能包含任何空格
包名称不应包含以下任何字符:~)(‘!*
包名称不能与node.js/io.js核心模块相同,也不能与保留/黑名单名称相同。例如,以下名称无效:
— http
— 流
—node_modules
— favicon.ico
包名长度不能超过214
这些是命名 Next.js 项目时应牢记的规则。
在 Think Throo,我们的使命是教授开源项目中使用的高级代码库架构概念。
通过在 Next.js/React 中练习高级架构概念,将您的编码技能提高 10 倍,学习最佳实践并构建生产级项目。
我们是开源的 — https://github.com/thinkthroo/thinkthroo (请给我们一颗星!)
我们还提供网络开发和技术写作服务。请通过hello@thinkthroo.com联系我们了解更多信息!
1. https://github.com/vercel/next.js/blob/canary/packages/create-next-app/index.ts#L162
2. https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/validate-pkg.ts#L13
3. https://www.npmjs.com/package/validate-npm-package-name
4. https://github.com/npm/validate-npm-package-name/tree/main
以上是create-next-app 使用此包验证您的应用程序名称的详细内容。更多信息请关注PHP中文网其他相关文章!