运行以下命令

    1. 在最新的 node16npm8 环境
    2. "stylelint": "stylelint --allow-empty-input 'src/**/*.{css,less,scss,sass}'",
    3. "stylelint:fix": "npm run stylelint -- --fix",
    4. 执行 npm run stylelint:fix 时报错,
    5. Error: Could not find "@applint/stylelint-config". Do you need a `configBasedir`?
    6. 复现案例 https://github.com/cloudyan/lint-example/runs/6643983274?check_suite_focus=true

    跟踪一下在源码这里

    1. // stylelint/lib/augmentConfig.js
    2. async function augmentConfigFull(stylelint, filePath, cosmiconfigResult) {
    3. if (!cosmiconfigResult) {
    4. return null;
    5. }
    6. const config = cosmiconfigResult.config;
    7. const filepath = cosmiconfigResult.filepath;
    8. const configDir = stylelint._options.configBasedir || path.dirname(filepath || '');

    是个依赖问题,改为使用 yarn 好了

    1. @applint/stylelint-config 安装到项目目录,能解决此问题,但这不是个好解决方案
    2. 将依赖安装改为 yarn pnpm 时,没问题了
    3. yarn: https://github.com/cloudyan/lint-example/runs/6644161656?check_suite_focus=true
    4. pnpm: https://github.com/cloudyan/lint-example/runs/6644486967?check_suite_focus=true
    5. 又折腾了几遍,npm 竟然也好了
    6. npm: https://github.com/cloudyan/lint-example/runs/6644411799?check_suite_focus=true
    7. 对比了下,主要是这个 @applint/stylelint-config 包安装的目录路径有区别,对比 package-lock.json 能看到区别。
    8. 一个在@applint/spec 目录下,一个安装到项目根目录下了。前者就会报错。
    9. 但为什么会出现这种问题?非常奇怪