我发现默认的 linting 配置与预期工作方式存在显著差异。
默认配置将 eslint-config-discourse 包安装为开发依赖项:
https://www.npmjs.com/package/eslint-config-discourse
然而,当我查看源代码时,在 https://github.com/discourse/eslint-config-discourse 该存储库被重定向到 @discourse/lint-configs;它也是 eslint-config-discourse monorepo 下的一个包。我认为包含的测试 eslint-config-discourse 应该是一个包装器,但它并没有按预期工作,至少根据我的经验是这样:
默认 Linting 配置
- 使用
discourse_theme new命令创建一个新主题。 - 查看生成的 linting 配置:
a..eslintrc
b.{ "extends": "eslint-config-discourse", "globals": { "settings": "readonly", "themePrefix": "readonly" } }.template-lintrc.js:
c.module.exports = { plugins: ["ember-template-lint-plugin-discourse"], extends: "discourse:recommended", };package.json{ "license": "MIT", "devDependencies": { "eslint-config-discourse": "latest" } } - 在包上运行 Prettier,它会抱怨
*.gjs文件:yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"错误:无法推断文件 ... .gjs 的解析器
直接配置 @discourse/lint-configs
https://www.npmjs.com/package/@discourse/lint-configs
- 运行
yarn remove -D eslint-config-discourse卸载该包。 - 运行
yarn add -D @discourse/lint-configs作为开发依赖项安装 - 按照说明创建 linting 配置文件:
a. 将.eslintrc文件替换为.eslintrc.cjs
b. 添加module.exports = require("@discourse/lint-configs/eslint-theme");.prettierrc.cjs文件:
c. 将module.exports = require("@discourse/lint-configs/prettier");.template-lintrc.js文件替换为.template-lintrc.cjs:module.exports = require("@discourse/lint-configs/template-lint"); - 再次尝试运行 Prettier,并观察它是否能正常工作而没有错误:
$ yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}" 正在检查格式... 所有匹配的文件都使用 Prettier 代码风格! ✨ 完成,耗时 0.46 秒。
那么,我是否应该认为 discourse_theme CLI 已过时,并且以后应该在我的项目中改用 @discourse/lint-configs 选项?

