diff --git a/.github/contributing.md b/.github/contributing.md index fe2ac7c114b..4b15faa5f26 100644 --- a/.github/contributing.md +++ b/.github/contributing.md @@ -36,9 +36,9 @@ Hi! I'm really excited that you are interested in contributing to Vue.js. Before - Make sure tests pass! -- Commit messages must follow the [commit message convention](./commit-convention.md) so that changelogs can be automatically generated. Commit messages are automatically validated before commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [yorkie](https://github.com/yyx990803/yorkie)). +- Commit messages must follow the [commit message convention](./commit-convention.md) so that changelogs can be automatically generated. Commit messages are automatically validated before commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks)). -- No need to worry about code style as long as you have installed the dev dependencies - modified files are automatically formatted with Prettier on commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [yorkie](https://github.com/yyx990803/yorkie)). +- No need to worry about code style as long as you have installed the dev dependencies - modified files are automatically formatted with Prettier on commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks)). ### Advanced Pull Request Tips diff --git a/package.json b/package.json index 88b8dabab1f..11f735bc9bf 100644 --- a/package.json +++ b/package.json @@ -25,20 +25,21 @@ "serve-sfc-playground": "vite packages/sfc-playground --host", "serve": "serve", "open": "open http://localhost:5000/packages/template-explorer/local.html", - "preinstall": "node ./scripts/preinstall.js", "prebuild-sfc-playground": "node scripts/build.js compiler reactivity-transform shared -af cjs && node scripts/build.js runtime reactivity shared -af esm-bundler && node scripts/build.js vue -f esm-bundler-runtime && node scripts/build.js vue -f esm-browser-runtime && node scripts/build.js compiler-sfc server-renderer -f esm-browser", - "build-sfc-playground": "cd packages/sfc-playground && npm run build" + "build-sfc-playground": "cd packages/sfc-playground && npm run build", + "preinstall": "node ./scripts/preinstall.js", + "postinstall": "simple-git-hooks" }, "types": "test-dts/index.d.ts", "tsd": { "directory": "test-dts" }, - "gitHooks": { - "pre-commit": "lint-staged", - "commit-msg": "node scripts/verifyCommit.js" + "simple-git-hooks": { + "pre-commit": "pnpm lint-staged", + "commit-msg": "node scripts/verifyCommit.mjs" }, "lint-staged": { - "*.js": [ + "*.{js,json}": [ "prettier --write" ], "*.ts?(x)": [ @@ -92,12 +93,12 @@ "semver": "^7.3.2", "serve": "^12.0.0", "terser": "^5.15.1", + "simple-git-hooks": "^2.8.1", "todomvc-app-css": "^2.3.0", "ts-jest": "^27.0.5", "tslib": "^2.4.0", "typescript": "^4.8.0", "vite": "^3.0.0", - "vue": "workspace:*", - "yorkie": "^2.0.0" + "vue": "workspace:*" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d32ae74e59..8f5b983a651 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,6 +45,7 @@ importers: rollup-plugin-typescript2: ^0.27.2 semver: ^7.3.2 serve: ^12.0.0 + simple-git-hooks: ^2.8.1 terser: ^5.15.1 todomvc-app-css: ^2.3.0 ts-jest: ^27.0.5 @@ -52,7 +53,6 @@ importers: typescript: ^4.8.0 vite: ^3.0.0 vue: workspace:* - yorkie: ^2.0.0 devDependencies: '@babel/types': 7.16.0 '@esbuild-plugins/node-modules-polyfill': 0.1.4_esbuild@0.14.35 @@ -95,6 +95,7 @@ importers: rollup-plugin-typescript2: 0.27.3_5n3xkh745miirxxwrc7sr3qioi semver: 7.3.5 serve: 12.0.1 + simple-git-hooks: 2.8.1 terser: 5.15.1 todomvc-app-css: 2.4.1 ts-jest: 27.1.1_by43bc54xkygl7pua4gfvniboa @@ -102,7 +103,6 @@ importers: typescript: 4.8.2 vite: 3.0.9_terser@5.15.1 vue: link:packages/vue - yorkie: 2.0.0 packages/compiler-core: specifiers: @@ -2006,10 +2006,6 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true - /ci-info/1.6.0: - resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} - dev: true - /ci-info/3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true @@ -3361,19 +3357,6 @@ packages: strip-eof: 1.0.0 dev: true - /execa/0.8.0: - resolution: {integrity: sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=} - engines: {node: '>=4'} - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.6 - strip-eof: 1.0.0 - dev: true - /execa/1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -4044,13 +4027,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-ci/1.2.1: - resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} - hasBin: true - dependencies: - ci-info: 1.6.0 - dev: true - /is-core-module/2.10.0: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: @@ -5458,11 +5434,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/1.0.0: - resolution: {integrity: sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=} - engines: {node: '>=0.10.0'} - dev: true - /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -6592,6 +6563,12 @@ packages: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} dev: true + /simple-git-hooks/2.8.1: + resolution: {integrity: sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==} + hasBin: true + requiresBuild: true + dev: true + /sisteransi/1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -6816,11 +6793,6 @@ packages: engines: {node: '>=6'} dev: true - /strip-indent/2.0.0: - resolution: {integrity: sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=} - engines: {node: '>=4'} - dev: true - /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -7555,17 +7527,6 @@ packages: fd-slicer: 1.1.0 dev: true - /yorkie/2.0.0: - resolution: {integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==} - engines: {node: '>=4'} - requiresBuild: true - dependencies: - execa: 0.8.0 - is-ci: 1.2.1 - normalize-path: 1.0.0 - strip-indent: 2.0.0 - dev: true - /z-schema/5.0.4: resolution: {integrity: sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==} engines: {node: '>=8.0.0'} diff --git a/scripts/verifyCommit.js b/scripts/verifyCommit.mjs similarity index 56% rename from scripts/verifyCommit.js rename to scripts/verifyCommit.mjs index d57497dea4b..81512ab920e 100644 --- a/scripts/verifyCommit.js +++ b/scripts/verifyCommit.mjs @@ -1,12 +1,14 @@ -// Invoked on the commit-msg git hook by yorkie. +import chalk from 'chalk' +import { readFileSync } from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' -const chalk = require('chalk') -const msgPath = process.env.GIT_PARAMS -const msg = require('fs') - .readFileSync(msgPath, 'utf-8') - .trim() +const dirname = path.dirname(fileURLToPath(import.meta.url), '..') +const msgPath = path.resolve(dirname, '../.git/COMMIT_EDITMSG') +const msg = readFileSync(msgPath, 'utf-8').trim() -const commitRE = /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/ +const commitRE = + /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/ if (!commitRE.test(msg)) { console.log()