Skip to content

fix: emoji with CommumJS #4557

@ViniDevBR

Description

@ViniDevBR

Steps to Reproduce

Only modules accept top level await. const config = require("@commitlint/config-conventional") const createPreset = require("conventional-changelog-conventionalcommits") cosnt { merge } = require("lodash-es") async function createEmojiParser() { const emojiRegexPart = Object.values(config.prompt.questions.type.enum) .map((value) => value.emoji.trim()) .join('|') const parserOpts = { breakingHeaderPattern: new RegExp( `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!:\\s+(.*)$`  ),  headerPattern: new RegExp(  `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!?:\\s+(.*)$`  ),  }   const defaultPreset = await createPreset()   return merge({}, defaultPreset, {  conventionalChangelog: { parserOpts },  parserOpts,  recommendedBumpOpts: { parserOpts },  }) }  const emojiParser = await createEmojiParser()  /**  * @type {import('@commitlint/types').UserConfig}  */ module.exports = {  extends: ['@commitlint/config-conventional'],  parserPreset: emojiParser,  prompt: {  questions: {  type: {  description: 'Select the type of change that you\'re committing',  headerWithEmoji: true,  enum: {  feat: {  description: 'A new feature',  title: 'Features',  emoji: '',  },  fix: {  description: 'A bug fix',  title: 'Bug Fixes',  emoji: '🐛',  },  docs: {  description: 'Documentation only changes',  title: 'Documentation',  emoji: '📚',  },  style: {  description:  'Changes that do not affect the meaning of the code (linters)',  title: 'Styles',  emoji: '🎨',  },  refactor: {  description:  'A code change that neither fixes a bug nor adds a feature',  title: 'Code Refactoring',  emoji: '♻️ ',  },  perf: {  description: 'A code change that improves performance',  title: 'Performance Improvements',  emoji: '🚀',  },  test: {  description: 'Adding missing tests or correcting existing tests',  title: 'Tests',  emoji: '🧪',  },  build: {  description:  'Changes that affect the build system or external dependencies (yarn)',  title: 'Builds',  emoji: '🏗️ ',  },  ci: {  description:  'Changes to our CI configuration files and scripts (GitActions)',  title: 'Continuous Integrations',  emoji: '⚙️ ',  },  chore: {  description: 'Other changes that don\'t modify src or test files',  title: 'Chores',  emoji: '🧩',  },  revert: {  description: 'Reverts a previous commit',  title: 'Reverts',  emoji: '',  },  },  },  },  }, }

Current Behavior

This doesnt work with commonJS.

Expected Behavior

Should a option for CommomJS.

A tried changed the imports for require

and tried to change await files for .then

tried to

export.module = (async () => { emojiParser = await createEmojiParser() return { extends: ['@commitlint/config-conventional'], parserPreset: emojiParser , prompt: { questions: { type: { description: 'Select the type of change that you\'re committing', headerWithEmoji: true, enum: { feat: { description: 'A new feature', title: 'Features', emoji: '✨', }, fix: { description: 'A bug fix', title: 'Bug Fixes', emoji: '🐛', }, docs: { description: 'Documentation only changes', title: 'Documentation', emoji: '📚', }, style: { description: 'Changes that do not affect the meaning of the code (linters)', title: 'Styles', emoji: '🎨', }, refactor: { description: 'A code change that neither fixes a bug nor adds a feature', title: 'Code Refactoring', emoji: '♻️ ', }, perf: { description: 'A code change that improves performance', title: 'Performance Improvements', emoji: '🚀', }, test: { description: 'Adding missing tests or correcting existing tests', title: 'Tests', emoji: '🧪', }, build: { description: 'Changes that affect the build system or external dependencies (yarn)', title: 'Builds', emoji: '🏗️ ', }, ci: { description: 'Changes to our CI configuration files and scripts (GitActions)', title: 'Continuous Integrations', emoji: '⚙️ ', }, chore: { description: 'Other changes that don\'t modify src or test files', title: 'Chores', emoji: '🧩', }, revert: { description: 'Reverts a previous commit', title: 'Reverts', emoji: '⏪', }, }, }, }, }, } } 

Affected packages

  • cli
  • core
  • prompt
  • config-angular

Possible Solution

Works with commomJS

Context

No response

commitlint --version

"@commitlint/cli": "^20.1.0",

git --version

2.37.0

node --version

22.15.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions