creativecommons / chooser

The new and improved CC license selection tool.
https://chooser-beta.creativecommons.org
MIT License
97 stars 124 forks source link

Fix prettier, eslint and stylelint config and also enable automatic execution #530

Open dijitali opened 2 months ago

dijitali commented 2 months ago

Fixes

Description

Runs prettier automatically for consistency. Also fixes eslint and stylelint config.

NB: these changes might be problematic with the new docker setup of this project (https://github.com/creativecommons/chooser/pull/517). If git commits are made on the host machine and git hooks don't execute within the container, then node, npm and packages may not have been installed so the hooks will fail.

Technical details

  1. Add and configure husky to run lint-staged (latest v8.x, since v9 drops node v14 support): npm install --save-dev husky@8.0.3 npx husky add .husky/pre-commit npx lint-staged
  2. Upgrade Prettier and add npm run format scripts: npm update prettier
  3. Downgrade eslint-config-prettier to be compatible with eslint v6 (current v7.2.0 requires eslint upgrade): npm install --save-dev eslint-config-prettier@6.15.0
  4. Ignores coverage and dist directories when running Prettier
  5. Update lint-staged to run prettier
  6. Remove git-hooks config from package.json (this project uses Husky not Yorkie)
  7. Check eslint <-> prettier conflicts and remove problematic rules:

    npx eslint --print-config src/App.vue | npx eslint-config-prettier-check
    
    #The following rules are unnecessary or might conflict with Prettier:
    
    # - comma-dangle
    # - indent
    # - space-before-function-paren
  8. Set lint-staged to run stylelint on the same file patterns as the npm script is configured to. This potentially needs further work as a separate PR because currently on main, if you run npx stylelint **/*.{css,vue} --fix (the equivalent of what lint-staged runs it against), there's a bunch of things flagged in the static directory.

Tests

  1. Run npm run lint and npm run format and check that tests and builds still work OK
  2. Try committing a change with incorrect formatting and verify that it's automatically fixed

Checklist

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 1 Letterman Drive Suite D4700 San Francisco, CA, 94129 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ```
netlify[bot] commented 2 months ago

Deploy Preview for creativecommons-chooser ready!

Name Link
Latest commit f7f8d0052c033788f58cd3c58036ed08e3a337b0
Latest deploy log https://app.netlify.com/sites/creativecommons-chooser/deploys/6625af8c60334f0008351193
Deploy Preview https://deploy-preview-530--creativecommons-chooser.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

dijitali commented 2 months ago

NB: these changes might be problematic with the new docker setup of this project (https://github.com/creativecommons/chooser/pull/517). If git commits are made on the host machine and git hooks don't execute within the container, then node, npm and packages may not have been installed so the hooks will fail.

I'm not aware of a general solution for a containerised application with git hooks but from a quick look:

  1. leave things as they are and setup sharing of git credentials into the container (e.g.. for dev containers with VSCode)
  2. change git hooks to user docker compose exec ... commands instead of npm run ... etc. This would basically mandate the use of docker when working with this project
  3. or just disable all git-hooks and leave code linting/formatting to be a manual step.