alibaba/lowcode-engine

@alifd/build-plugin-lowcode parseNpmName return an invalid uniqueName

Open

#459 aberto em 9 de mai. de 2022

Ver no GitHub
 (4 comments) (0 reactions) (1 assignee)TypeScript (2.228 forks)batch import
bughelp wanted

Métricas do repositório

Stars
 (12.714 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

Describe the bug (required) / 详细描述 bug(必填)

@alifd/build-plugin-lowcode parseNpmName

// Source code
// @alifd/build-plugin-lowcode/utils/index.js:29

function parseNpmName(npmName) {
  if (typeof npmName !== 'string') {
    throw new TypeError('Expected a string');
  }
  const matched =
    npmName.charAt(0) === '@' ? /(@[^\/]+)\/(.+)/g.exec(npmName) : [npmName, '', npmName];
  if (!matched) {
    throw new Error(`[parse-package-name] "${npmName}" is not a valid string`);
  }
  const scope = matched[1];
  const name = (matched[2] || '').replace(/\s+/g, '').replace(/[\-_]+([^\-_])/g, ($0, $1) => {
    return $1.toUpperCase();
  });
  const uniqueName =
    (matched[1] ? matched[1].charAt(1).toUpperCase() + matched[1].slice(2) : '') +
    name.charAt(0).toUpperCase() +
    name.slice(1);
  return {
    scope,
    name,
    uniqueName,
  };
}



parseNpmName('@company-group/package')
// {
//   scope: '@company-group',
//   name: 'package',
//   uniqueName: 'Company-groupPackage'
// }

// .tmp/meta.js
if (!execCompile) {
  window.Company-groupPackageMeta = { components, componentList }; ERROR
}

To Reproduce (required) / 如何复现 bug?(必填,非常重要)

package.json

{
  "name": "@company-group/package",
  "version": "1.0.0"
}
npm run lowcode:build

Expected behavior (required) / 预期行为(必填,非常重要)

parseNpmName('@company-group/package')
// {
//   scope: '@company-group',
//   name: 'package',
//   uniqueName: 'CompanyGroupPackage'
// }

// .tmp/meta.js
if (!execCompile) {
  window.CompanyGroupPackageMeta = { components, componentList };
}

Environments (please complete the following information) (required): / 请提供如下信息(必填)

  • @alifd/build-plugin-lowcode@0.3.0-beta.3

Additional context (optional) / 更多额外信息(可选)

  const uniqueName =
    (matched[1]
      ? matched[1].charAt(1).toUpperCase() +
        matched[1].slice(2).replace(/[\-_]+([^\-_])/g, ($0, $1) => {
          return $1.toUpperCase();
        })
      : '') +
    name.charAt(0).toUpperCase() +
    name.slice(1);

Guia do colaborador