I won’t be saying that you should be using a sub version but the main reason behind this post is how important code consistence is when using subversion.
If you are like me, whenever you complete a line of code, you hit your key combination to auto format your code. This is a common practice followed by many developers. The thing is, your code format is probably different than mine because we use different IDE’s or different formatting settings.
This is a pain specially when we need to track code changes across sub version systems. Having a hole file modified by a developer while only one line of code was modified is a real pain.
Here’s how I solved this issues in my team projects.
Please notice that this tools are suited for Node.js projects and Angular projects and js variant projects.
Step 1: Install Husky
npm install husky -D
Step 2: Update package.json
{ "husky": { "hooks": { "pre-commit": "lint-staged" } } }
Step 3: Install prettier
npm install prettier -D
Step 4: Create a .prettierrc file
touch .prettierrc
And add the following content
{ "singleQuote": true, "tabWidth": 2, "useTabs": false, "bracketSpacing": true }
If you have files to ignore then create a .prettierignore and specify the relative path to the files you dont want prettier to touch.
Step 5: Install tslint-config-prettier
This tool will help you setup prettier and tslint and avoid conflicts.
npm install -D tslint-config-prettier
You must update your tslint.json to include the “extends” property as follows. If you don’t have one, create it and make sure you install tslint in your project.
{ "extends": [ "tslint:latest", "tslint-config-prettier" ] …
On angular projects, tslint.json is supplied by default. You will have to make some additional changes:
// add the line below to the scripts in your projects package.json // this will allow to detect conflicts among prettier and your tslint file. "tslint-check": "tslint-config-prettier-check ./tslint.json" // Then run $ npm run ts-lint-check // If you like me are using Angular 8, you will probably see the following conflicts.Go to your tslint.json and remove the conflicts. - Max-line-length - Object-literal-key-quotes - Quotemark
To complete this guide:
// 1) Install lint-staged $ npm install -D lint-staged /// or with npx $ npx mrm lint-staged // This command will (if everything goes well, automatically update you package.json) // You can check the project on github at https://github.com/okonet/lint-staged // 2) Then make you sure you add a configuration to your package.json { ... "lint-staged": { "*.ts": [ "prettier --write", "git add" ] } }
Optionally you can add a “format” script tag to your package.json
"format": "prettier --write ./src/**/*.ts"
Shipping a changelog with your app release
Everytime I build a project, I like to include very minimalistic changelog file. Here’s how to do this:
$ npm install auto-changelog $ npm install htz-auto-changelog-tmpl // Now let's configure the package.json { .... "auto-changelog": { "output": "./path/to/output/changelog.txt", "template": "./node_modules/htz-auto-changelog-tmpl/tmpl/basic.hbs", "unreleased": true, "commitLimit": false, "includeBranch": [] } .... } // in the above config we are using a custom template. You can also use the auto-changelog internal templates
Then make sure to add the following script to package.json scripts:
"changelog": "npx auto-changelog"
The you can run you npm run changelog
whenever you want to generate your change log