Qarson BASE UI
Main purpose of this library is to aggregate main UI parts of qarson multipage system. Library contains css styles written in SASS preprocessor and few smaller javascript functions of user interface basing on simple selecting DOM element mostly with jquery and manipulate DOM tree. Library use customized bootstrap.
Requirements
- nodejs with npm v10 +
Installation:
Installing depedencies
npm install
Build production library files
npm run build
Development:
Library is third party lib for main project.
To work with code in configured development process you need to do few steps:
-
Link current library (be aware of used the same node version in all)
npm link
-
Run build process in development mode with watching changes
npm run build:dev
-
Move to "including" lib directory and link local resources
npm link @dac-software/base-ui
Then, run webpack-dev-server instance in order to instructions in "including" project.
* Build task build two types of library entrypoints:
- "web" - destined to web include, currently not useful - but left to keep publishing consistency
- "ecma script module" - destined for further bundler processing, it is resolved through simply copyfiles statement
copyfiles "./lib/**/*.!(tsx|ts|d.ts|html)" "dist/esm" -u 1
To run deploy on preview host :
npm run shipit preview deploy
Preview will be available at http://base-ui-preview.rc7.e-d-p.net/
####Codestyle
We are in consonance with standardjs.
Validation codestyle:
npm run codestyle-check
Automatic fix:
npm run codestyle-fix
Development guides
- In Bootstrap: we modify only variables from bootstrap _variables.scss file
- In variables/variables.scss file in styles directory we define variables used in our styles, classes and for overwrite bootstrap default variables (name convention $brand-XXXX) Bootstrap variables are overwriting in styles/vendor/bootstrap/variables/X file, using variables from main variables/variables.scss file
- Bootstrap extensions:
- defined in /app directory
- oocss convention for properties defined by bootstrap e.g.:
- missing background: .brand-bg-blue { background-color: #0000FF; }
- missing margin: .brand-margin-big { margin: 100px; }
- Defining components in BEM - when:
- We need to defined CSS properties which aren't defined in bootstrap classes
- We are using our custom variables
- Icons in svg are in lib/assets/icons. You can use icons with 'ico-' prefix.
- To use icons, first generate icons with
icons are generating automatically when you run app
npm run generate-icons
Development test deploy
For manual tests purposes library should be published on npm with dev tag with task/story identifier
NPM publishing
NPM publishing manually:
- Increase version in package.json
- Npm login with proper username and password
npm login
- Npm publish (command will trigger prepare npm method which should build files to dist directory)
npm publish --access=public
NPM publishing through bitbucket pipelines:
-
dev tag publish using pipeline named:
custom: dev-npm-publish
This pipeline automatically defines branch related tag name, for example :
1.0.0-some-branch-name.0
-
production tag publish using pipeline named:
custom: prod-npm-publish
This pipeline requires what kind of semver tag should be defined for publish. You need to fill additional field in pipeline form and type one of version type : - patch - minor - major