We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
因为搭建的是node项目, 所以比前端项目搭建要简单很多。
从以下因素考虑
.yarnrc 、.npmrc
.gitignore
这个问题比较简单没有什么好说的, 推荐 yarn , 如果是非常复杂的项目, 推荐使用 yarn/workSpace + lerna 组合拳, 爽歪歪。
.yarnrc:
.yarnrc
registry "https://registry.npm.taobao.org"
npmrc:
npmrc
registry = https://registry.npm.taobao.org
.gitignore:
# See https://help.github.com/ignore-files/ for more about ignoring files. # dependencies node_modules/ # testing coverage/ /doc/ /mock2easy/ # production /build /coverage worker/ # misc .DS_Store .env.local .env.development.local .env.test.local .env.production.local .idea .idea/ /packages/**/*.js /packages/**/*.js.map !jest.config.js tempDownload/ npm-debug.log* yarn-debug.log* yarn-error.log* yarn.lock package-lock.json
集成eslint、prettier、recommended .eslintrc.js:
.eslintrc.js
module.exports = { parser: '@typescript-eslint/parser', parserOptions: { ecmaFeatures: { jsx: true, }, project: './tsconfig.json', }, plugins: ['@typescript-eslint'], extends: [ 'prettier', 'prettier/@typescript-eslint', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', 'plugin:prettier/recommended', ], env: { node: true, browser: false, }, rules: { '@typescript-eslint/no-var-requires': 1, '@typescript-eslint/explicit-function-return-type': 2, '@typescript-eslint/explicit-member-accessibility': 2, 'no-unused-vars': 2, semi: [2, 'always', { omitLastInOneLineBlock: true }], }, };
.prettierrc:
.prettierrc
{ "singleQuote": true, "trailingComma": "all", "printWidth": 140, "semi": true, "bracketSpacing": true, "jsxBracketSameLine": true, "arrowParens": "avoid", "requirePragma": false, "proseWrap": "preserve", "htmlWhitespaceSensitivity": "ignore", "tabWidth": 2 }
集成commitlint - commitlint.config.js:
commitlint
commitlint.config.js
module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore', 'revert']], 'subject-full-stop': [0, 'never'], 'subject-case': [0, 'never'], }, };
每次提交自动检测eslint\commitLint: 可以看这篇文章:使用husky、prettier、lint、commitlint构建规范化项目实践
需要安装的依赖包:yarn add @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli commitizen lint-staged husky --dev
yarn add @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli commitizen lint-staged husky --dev
package.json
{ "scripts": { "type-check": "tsc", "prettier": "prettier --write", "commit": "commit" }, "config": { "commitizen": { "path": "cz-conventional-changelog" } }, "husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } }, "lint-staged": { "**/*.{js,ts,tsx}": [ "yarn prettier", "git add" ], "**/*.{ts,spec.js,tsx}": [ "eslint --fix", "git add" ] } }
装包:yarn add @types/jest jest ts-jest --dev
yarn add @types/jest jest ts-jest --dev
具体可以看看看这个文章: jest测试基础
jest.config.js:
module.exports = { transform: { '^.+\\.tsx?$': 'ts-jest', }, testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], };
tsconfig.json
{ "compilerOptions": { "module": "commonjs", "target": "es6", "noImplicitAny": false, //在表达式和声明上有隐含的any类型时报错 "moduleResolution": "node", "typeRoots": [ "node_modules/@type", "typings/modules", "node_modules" ], "allowJs": true, "emitDecoratorMetadata": true, //给源码里的装饰器声明加上设计类型元数据 "experimentalDecorators": true, //启用实验性的ES装饰器 "importHelpers": true, "removeComments": true, "preserveConstEnums": true, "sourceMap": true, "allowSyntheticDefaultImports": true, // "outDir": "build", "baseUrl": ".", "lib": [ "es6", "dom", "es7" ], "types": [ "node", "@types/jest" ] }, "include": [ "src/**/*" ], "exclude": [ "node_modules/", "src/**/*.spec.ts", "src/**/*.js" ] }
{ "name": "***", "version": "0.0.1", "description": "***", "main": "./src/main.js", "scripts": { "prepare": "npm run tsc", "lint": "eslint --ext .ts ./", "lint:fix": "yarn lint --fix", "type-check": "tsc", "prettier": "prettier --write", "commit": "commit", "test": "jest" }, "config": { "commitizen": { "path": "cz-conventional-changelog" } }, "husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } }, "lint-staged": { "**/*.{js,ts,tsx}": [ "yarn prettier", "git add" ], "**/*.{ts,spec.js,tsx}": [ "eslint --fix", "git add" ] }, "devDependencies": { "@commitlint/cli": "^8.2.0", "@commitlint/config-conventional": "^8.2.0", "@commitlint/prompt-cli": "^8.2.0", "@types/jest": "^24.0.25", "@types/node": "^13.1.1", "@typescript-eslint/eslint-plugin": "^2.13.0", "@typescript-eslint/parser": "^2.13.0", "commitizen": "^4.0.3", "eslint": "^6.8.0", "eslint-config-prettier": "^6.9.0", "eslint-plugin-prettier": "^3.1.2", "husky": "^3.1.0", "jest": "^24.9.0", "lint-staged": "^9.5.0", "prettier": "^1.19.1", "ts-jest": "^24.2.0", "typescript": "^3.7.4" } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
总体概括
因为搭建的是node项目, 所以比前端项目搭建要简单很多。
从以下因素考虑
.yarnrc 、.npmrc
.gitignore
装包问题
这个问题比较简单没有什么好说的, 推荐 yarn , 如果是非常复杂的项目, 推荐使用 yarn/workSpace + lerna 组合拳, 爽歪歪。
.yarnrc
:npmrc
:.gitignore
:代码规范
集成eslint、prettier、recommended
.eslintrc.js
:.prettierrc
:集成
commitlint
-commitlint.config.js
:每次提交自动检测eslint\commitLint:
可以看这篇文章:使用husky、prettier、lint、commitlint构建规范化项目实践
需要安装的依赖包:
yarn add @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli commitizen lint-staged husky --dev
package.json
测试部分
装包:
yarn add @types/jest jest ts-jest --dev
具体可以看看看这个文章: jest测试基础
jest.config.js:
代码构建
tsconfig.json
总结
package.json
参考文章
The text was updated successfully, but these errors were encountered: