Skip to content

fix: docker image throws error for TypeScript config filesΒ #4623

@danieldecsi

Description

@danieldecsi

Steps to Reproduce

1. Create this config file:
`.commitlintrc.ts`

import { RuleConfigSeverity } from '@commitlint/types';
import type { UserConfig } from '@commitlint/types';

export default {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'header-max-length': [RuleConfigSeverity.Error, 'always', 100],
  },
} satisfies UserConfig;


2. Run commitlint with the provided pre-built Docker image from Docker Hub:
`docker run --rm -it -v $(pwd):/app -w /app commitlint/commitlint:20.4.1 --last`

Current Behavior

Throws this error:

Error: Cannot find module '@commitlint/types'
Require stack:
- /app/.commitlintrc.ts
    at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
    at Function.resolve (node:internal/modules/helpers:188:19)
    at jitiResolve (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:187220)
    at jitiRequire (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:189288)
    at import (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:199778)
    at /app/.commitlintrc.ts:1:216
    at eval_evalModule (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:196325)
    at jitiRequire (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:190233)
    at Function.import (/usr/local/lib/node_modules/@commitlint/load/node_modules/jiti/dist/jiti.cjs:1:199778)
    at file:///usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader/dist/esm/loader.mjs:8:41
    at tsLoader (file:///usr/local/lib/node_modules/@commitlint/load/lib/utils/load-config.js:13:16)
    at #loadConfiguration (/usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig/dist/Explorer.js:116:42)
    at #loadConfigFileWithImports (/usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig/dist/Explorer.js:87:60)
    at #readConfiguration (/usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig/dist/Explorer.js:84:88)
    at async search (/usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig/dist/Explorer.js:50:40)
    at async Explorer.search (/usr/local/lib/node_modules/@commitlint/load/node_modules/cosmiconfig/dist/Explorer.js:78:20)
    at async loadConfig (file:///usr/local/lib/node_modules/@commitlint/load/lib/utils/load-config.js:53:19)
    at async load (file:///usr/local/lib/node_modules/@commitlint/load/lib/load.js:24:20)
    at async main (file:///usr/local/lib/node_modules/@commitlint/cli/lib/cli.js:200:20) {
  name: '_TypeScriptCompileError',
  filepath: '/app/.commitlintrc.ts'

Expected Behavior

Should work without errors.

Affected packages

  • cli
  • core
  • prompt
  • config-angular

Possible Solution

What I managed to figure out is that underlaying compiler that deals with TypeScript can't import @commitlint/types because it is installed globally. If it is installed locally it works well (we use commitlint also as a husky commit-msg hook and it works there without issues).

Context

No response

commitlint --version

20.4.0

git --version

2.39.2

node --version

18.x

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions