Merge pull request #392 from 18003228289/husky

feat: add commit lint and husky
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100644
index 0000000..314e821
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx --no-install commitlint --edit $1
\ No newline at end of file
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000..04c7b8d
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,32 @@
+module.exports = {
+  extends: ['@commitlint/config-conventional'],
+  rules: {
+    'body-leading-blank': [2, 'always'],
+    'footer-leading-blank': [1, 'always'],
+    'header-max-length': [2, 'always', 108],
+    'subject-empty': [2, 'never'],
+    'type-empty': [2, 'never'],
+    'subject-case': [0],
+    'type-enum': [
+      2,
+      'always',
+      [
+        'feat',
+        'fix',
+        'perf',
+        'style',
+        'docs',
+        'test',
+        'refactor',
+        'build',
+        'ci',
+        'chore',
+        'revert',
+        'wip',
+        'workflow',
+        'types',
+        'release',
+      ],
+    ],
+  },
+}
diff --git a/example/dubbo-node-example/package-lock.json b/example/dubbo-node-example/package-lock.json
index ee567f0..2dad4f4 100644
--- a/example/dubbo-node-example/package-lock.json
+++ b/example/dubbo-node-example/package-lock.json
@@ -756,4 +756,4 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     }
   }
-}
+}
\ No newline at end of file
diff --git a/example/dubbo-web-example/package-lock.json b/example/dubbo-web-example/package-lock.json
index 7ef70c9..cf430e0 100644
--- a/example/dubbo-web-example/package-lock.json
+++ b/example/dubbo-web-example/package-lock.json
@@ -2502,4 +2502,4 @@
       }
     }
   }
-}
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 5fe9d63..f581777 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,9 @@
 {
   "private": true,
   "name": "dubbo-js-private-workspace",
+  "scripts": {
+    "prepare": "husky install"
+  },
   "workspaces": [
     "./packages/dubbo",
     "./packages/protoc-gen-apache-dubbo-es",
@@ -18,19 +21,20 @@
     "node": ">=16",
     "npm": ">=8"
   },
-  "type": "module",
   "engineStrict": true,
   "devDependencies": {
-    "husky": "^6.0.0",
+    "@commitlint/cli": "^19.2.1",
+    "@commitlint/config-conventional": "^19.1.0",
+    "@types/node": "^20.4.0",
     "@typescript-eslint/eslint-plugin": "^5.59.1",
     "@typescript-eslint/parser": "^5.59.2",
     "eslint": "^8.39.0",
     "eslint-import-resolver-typescript": "^3.5.5",
     "eslint-plugin-import": "^2.27.5",
     "eslint-plugin-node": "^11.1.0",
+    "husky": "^6.0.0",
     "prettier": "^2.8.8",
-    "typescript": "5.0.3",
-    "@types/node": "^20.4.0"
+    "typescript": "5.0.3"
   },
   "license": "Apache-2.0"
 }