Skip to content

Commit

Permalink
feat: add prettier config (#21)
Browse files Browse the repository at this point in the history
* feat: update prettier config for *.rc file

* feat: *rc, *.json file use 'json-stringify' parser

* feat: add prettier-config

* feat: make prettier parse to json in tsconfig file

* feat: lint @mjolnir/prettier-config

* feat: change prettier config ext

* feat: prettier all files

* feat: add jsonc format files to prettier

* feat: update prettier override

* chore: format tsconfig.json
  • Loading branch information
leohxj authored Aug 30, 2019
1 parent 2a6b3ae commit 3a998de
Show file tree
Hide file tree
Showing 34 changed files with 174 additions and 334 deletions.
4 changes: 3 additions & 1 deletion .commitlintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{
"extends": ["@commitlint/config-conventional"]
"extends": [
"@commitlint/config-conventional"
]
}
5 changes: 4 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"extends": ["@mjolnir/eslint-config/node", "plugin:prettier/recommended"],
"extends": [
"@mjolnir/eslint-config/node",
"plugin:prettier/recommended"
],
"rules": {}
}
5 changes: 4 additions & 1 deletion .lintstagedrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"$schema": "http://json.schemastore.org/lintstagedrc.schema",
"**/*.{js, ts}": ["prettier --write", "eslint --fix", "git add"]
"**/*.{js, ts}": [
"eslint --fix",
"git add"
]
}
7 changes: 1 addition & 6 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
{
"$schema": "http://json.schemastore.org/prettierrc",
"printWidth": 80,
"singleQuote": true,
"arrowParens": "always"
}
"@mjolnir/prettier-config"
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
{ "language": "typescriptreact", "autoFix": true }
],
"cSpell.words": [
"mjolnir"
"mjolnir",
"mjolnirjs"
]
}
10 changes: 5 additions & 5 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

module.exports = (api) => {
module.exports = api => {
api.cache(false);

return {
Expand All @@ -10,9 +10,9 @@ module.exports = (api) => {
'@mjolnir/babel-preset',
{
react: false,
typescript: false
}
]
]
typescript: false,
},
],
],
};
};
15 changes: 10 additions & 5 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
{
"changelog": {
"repo": "mjolnirjs/mjolnir",
"cacheDir": ".changelog"
},
"$schema": "http://json.schemastore.org/lerna",
"npmClient": "yarn",
"version": "independent",
"useWorkspaces": true
"useWorkspaces": true,
"command": {
"version": {
"conventionalCommits": true
},
"publish": {
"message": "chore(release): publish"
}
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
"@commitlint/config-conventional": "^8.1.0",
"@mjolnir/babel-preset": "link:packages/babel-preset",
"@mjolnir/eslint-config": "link:packages/eslint-config",
"@mjolnir/prettier-config": "link:packages/prettier-config",
"cross-env": "^5.2.0",
"eslint": "^6.1.0",
"eslint-config-prettier": "^6.0.0",
"eslint-plugin-prettier": "^3.1.0",
"husky": "^3.0.4",
"lerna": "^3.15.0",
"lerna-changelog": "^0.8.2",
"lint-staged": "^9.2.4",
"prettier": "^1.17.1",
"typescript": "^3.5.3"
Expand Down
18 changes: 9 additions & 9 deletions packages/babel-preset/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ module.exports = declare((api, opts) => {
require('@babel/plugin-syntax-dynamic-import'),
require('@babel/plugin-syntax-import-meta'),
[require('@babel/plugin-proposal-class-properties'), { loose: true }],
require('@babel/plugin-proposal-json-strings')
require('@babel/plugin-proposal-json-strings'),
];

const presets = [
Expand All @@ -40,9 +40,9 @@ module.exports = declare((api, opts) => {
require('@babel/preset-env'),
{
//TODO: how about other opts
modules // default to false, webpack takes care of modules
}
]
modules, // default to false, webpack takes care of modules
},
],
];

if (typescript) presets.push(require('@babel/preset-typescript'));
Expand All @@ -51,22 +51,22 @@ module.exports = declare((api, opts) => {
presets.push([
require('@babel/preset-react'),
{
development: env
}
development: env,
},
]);
if (env === 'production') {
// Remove PropTypes from production build
plugins.push([
require('babel-plugin-transform-react-remove-prop-types'),
{
removeImport: true
}
removeImport: true,
},
]);
}
}

return {
presets,
plugins
plugins,
};
});
2 changes: 1 addition & 1 deletion packages/eslint-config/babel.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

// for babel env, base on es6 env
module.exports = {
extends: ['./index', './plugins/babel'].map(require.resolve)
extends: ['./index', './plugins/babel'].map(require.resolve),
};
8 changes: 4 additions & 4 deletions packages/eslint-config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ module.exports = {
root: true, // limit ESLint to a specific project
env: {
browser: true,
es6: true // also enable ecmaVersion: 6
es6: true, // also enable ecmaVersion: 6
},
parserOptions: {
ecmaVersion: 2018, // same as 9
sourceType: 'module', // ECMAScript module
ecmaFeatures: {
globalReturn: false,
impliedStrict: true,
jsx: true
}
jsx: true,
},
},
extends: ['./rules', './plugins/import'].map(require.resolve)
extends: ['./rules', './plugins/import'].map(require.resolve),
};
2 changes: 1 addition & 1 deletion packages/eslint-config/jest.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
// for jest env
module.exports = {
extends: ['./index', './plugins/jest'].map(require.resolve),
rules: {}
rules: {},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
module.exports = {
root: true, // limit ESLint to a specific project
extends: ['./rules', './plugins/node'].map(require.resolve),
rules: {}
rules: {},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/plugins/babel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
module.exports = {
parser: 'babel-eslint',
plugins: ['babel'],
rules: {}
rules: {},
};
4 changes: 2 additions & 2 deletions packages/eslint-config/plugins/import.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ module.exports = {
// red flags (thus, warnings)
'import/no-named-as-default': 'warn',
'import/no-named-as-default-member': 'warn',
'import/no-duplicates': 'warn'
}
'import/no-duplicates': 'warn',
},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/plugins/jest.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
// plugin:jest/recommended: https://github.com/jest-community/eslint-plugin-jest/blob/master/README.md
module.exports = {
extends: ['plugin:jest/recommended'],
rules: {}
rules: {},
};
4 changes: 2 additions & 2 deletions packages/eslint-config/plugins/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ module.exports = {
extends: ['plugin:node/recommended'],
rules: {
// commonjs or node env, should use global strict model
strict: ['error', 'global']
}
strict: ['error', 'global'],
},
};
4 changes: 2 additions & 2 deletions packages/eslint-config/plugins/react-hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ module.exports = {
plugins: ['react-hooks'],
rules: {
'react-hooks/exhaustive-deps': 'warn',
'react-hooks/rules-of-hooks': 'error'
}
'react-hooks/rules-of-hooks': 'error',
},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/plugins/react.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

module.exports = {
plugins: ['react'],
rules: {}
rules: {},
};
4 changes: 2 additions & 2 deletions packages/eslint-config/plugins/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = {
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'plugin:import/typescript'
'plugin:import/typescript',
],
rules: {}
rules: {},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/react.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

// for react env
module.exports = {
extends: ['./plugins/react', './plugins/react-hooks'].map(require.resolve)
extends: ['./plugins/react', './plugins/react-hooks'].map(require.resolve),
};
4 changes: 2 additions & 2 deletions packages/eslint-config/rules/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = {
'./errors',
'./es6',
'./style',
'./variables'
'./variables',
].map(require.resolve),
rules: {}
rules: {},
};
2 changes: 1 addition & 1 deletion packages/eslint-config/rules/recommend.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

// eslint:recommended: https://eslint.org/docs/rules
module.exports = {
extends: ['eslint:recommended']
extends: ['eslint:recommended'],
};
2 changes: 1 addition & 1 deletion packages/eslint-config/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

// for typescript env, base on es6 env
module.exports = {
extends: ['./index', './plugins/typescript'].map(require.resolve)
extends: ['./index', './plugins/typescript'].map(require.resolve),
};
8 changes: 4 additions & 4 deletions packages/mjolnir-cli/.babelrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ module.exports = {
{
react: false,
typescript: true,
modules: "commonjs"
}
]
]
modules: 'commonjs',
},
],
],
};
4 changes: 0 additions & 4 deletions packages/mjolnir-cli/.eslintrc.js

This file was deleted.

7 changes: 7 additions & 0 deletions packages/mjolnir-cli/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": [
"@mjolnir/eslint-config/typescript",
"plugin:prettier/recommended"
],
"rules": {}
}
6 changes: 4 additions & 2 deletions packages/mjolnir-cli/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
"compilerOptions": {
"module": "es6",
"target": "es5",
"lib": ["esnext"],
"lib": [
"esnext"
],
"declaration": true,
"outDir": "dist",
"esModuleInterop": true,
"moduleResolution": "node",
"strict": true,
"strict": true
}
}
21 changes: 21 additions & 0 deletions packages/prettier-config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# @mjolnir/prettier-config

## install
`yarn add @mjolnir/prettier-config -D`

## useage

add it in your `package.json`:
```
{
"prettier": "@mjolnir/prettier-config"
}
```

if you want to extends the configuration and overwrite some properties, import the file in a `.prettierrc.js` file and export the modifications:

```js
module.exports = {
...require("@mjolnir/prettier-config");
}
```
34 changes: 34 additions & 0 deletions packages/prettier-config/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict';

module.exports = {
singleQuote: true,
trailingComma: 'all',
htmlWhitespaceSensitivity: 'ignore',
overrides: [
{
files: ['.*rc', '*.json'],
options: {
parser: 'json-stringify',
},
},
{
// special file use jsonc format
files: [
'.vscode/*.json',
'jsconfig.json',
'tsconfig.json',
'tsconfig.*.json',
'tsconfig-*.json',
'tsconfig.json',
'.babelrc',
'.eslintrc',
'.eslintrc.json',
'tslint.json',
'tslint.*.json',
],
options: {
parser: 'json',
},
},
],
};
Loading

0 comments on commit 3a998de

Please sign in to comment.