alibaba/lowcode-engine

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

Aberta

#459 aberto em 9 de mai. de 2022

 (4 comentários) (0 reação) (1 responsável)TypeScript (2.228 forks)batch import
bughelp wanted

Métricas do repositório

Stars
 (12.714 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

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