npm init -y
npx mrm gitignore prettier jest
npm i -D @babel/core babel-jest @babel/eslint-parser # use babel for eslint and jest
npm i -D eslint-config-prettier eslint-plugin-prettier
npm i -D @babel/preset-env @babel/plugin-transform-modules-commonjs # for compile js
- .eslintrc.js
module.exports = {
parser: '@babel/eslint-parser',
parserOptions: {
sourceType: 'module',
requireConfigFile: false,
},
// babelOptions: {
// presets: ['@babel/preset-react'],
// },
env: {
commonjs: true,
jest: true,
es6: true,
node: true,
browser: true,
},
extends: ["plugin:prettier/recommended"],
rules: {
'no-undef': 'error',
'no-unused-vars': 'warn',
'no-console': 'off',
},
};
- prettier.config.js
module.exports = {
$schema: 'http://json.schemastore.org/prettierrc',
arrowParens: 'always',
printWidth: 88,
useTabs: false,
singleQuote: true,
tabWidth: 2,
trailingComma: 'all',
overrides: [
{
files: ['*.yaml', '*.yml'],
options: {
singleQuote: false,
},
},
],
};
- .editorconfig
[*.{js,ts}]
charset = utf-8
indent_style = space
indent_size = 2
[git/config]
indent_style = tab
[Makefile]
indent_style = tab
[*.{json,yaml,yml}]
indent_style = space
indent_size = 2
- package.json
{
{
"transform": {
"^.+\\.[t|j]sx?$": "babel-jest"
},
"setupFiles": [
"./test/jestsetup.js"
]
}
}
- babel.config.js
'use strict';
module.exports = function (api) {
api.cache(true);
const envOpts = {
modules: 'commonjs',
targets: {
node: '10'
}
};
const presets = [['@babel/preset-env', envOpts]];
const plugins = [];
return {
presets,
plugins
};
};