alibaba/lowcode-engine

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

Ouverte

#459 ouverte le 9 mai 2022

 (4 commentaires) (0 réaction) (1 personne assignée)TypeScript (2 228 forks)batch import
bughelp wanted

Métriques du dépôt

Stars
 (12 714 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

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);

Guide contributeur