- project uses typescript to statically analyze code
- project uses
eslint
to check frontend code. You can manually run vianpm run lint
. - git hooks (via husky) installed automatically on
npm install
and check and try to fix code style if possible, otherwise commit will be rejected - if you want IDE integration, you need
eslint
plugin to be installed.
- although styles have
scss
extension, it is actually pack of post-css plugins, so syntax differs, for example incalc
function. - component styles use BEM notation (at least it should):
block__element_modifier
. Also there aremix
classes:block_modifier
. - component base style resides in the component's root directory with name of component converted to kebab-case. For example
ListComments
style is located in./app/components/list-comments/list-comments/scss
- component's element style resides in its own subdirectory, with name consisting of full elements selector, for example
ListComments
item
element is placed in__item
directory under name./list-comments__item.scss
- each style should be
require
d inindex.ts
of component's root directory
- imports for typescript, javascript files should be without extension:
./index
, not./index.ts
- if file resides in same directory or in subdirectory import should be relative:
./types/something
- otherwise it should start from
@app
namespace:@app/common/store
which mapped to/app/common/store.ts
in webpack, tsconfig and jest
- project uses
jest
as test harness. - jest check files that match regex
\.test\.(j|t)s(x?)$
, i.ecomment.test.tsx
,comment.test.js
- tests are running on push attempt
- example tests can be found in
./app/store/user/reducers.test.ts
,./app/components/auth-panel/auth-panel.test.tsx
Please see this documentation.
- Frontend part being bundled on docker env gets placed on
/src/web
and is available viahttp://{host}/web
. for exampleembed.js
entry point will be available athttp://{host}/web/embed.js