mirror of
https://github.com/NoRedInk/noredink-ui.git
synced 2024-10-05 19:38:43 +03:00
Revert "Merge pull request #461 from NoRedInk/puffins/prepare-for-merge"
This reverts commit4373c78d82
, reversing changes made to6b78075f02
.
This commit is contained in:
parent
33d5ceecbc
commit
28d36c6f64
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1 +1 @@
|
||||
lib/noredink-ui/styleguide-app/assets/images/** filter=lfs diff=lfs merge=lfs -text
|
||||
styleguide-app/assets/images/** filter=lfs diff=lfs merge=lfs -text
|
||||
|
0
lib/noredink-ui/.gitignore → .gitignore
vendored
0
lib/noredink-ui/.gitignore → .gitignore
vendored
@ -19,7 +19,6 @@ before_install:
|
||||
make && make install;
|
||||
cd ..;
|
||||
fi
|
||||
cd lib/noredink-ui
|
||||
|
||||
install:
|
||||
- travis_retry $TRAVIS_BUILD_DIR/sysconfcpus/bin/sysconfcpus -n 2 make -B setup
|
||||
|
120
README.md
120
README.md
@ -1,3 +1,121 @@
|
||||
# noredink-ui
|
||||
|
||||
Source code lives in the `lib/noredink-ui` subdirectory. Please check it out for a more detailed README!
|
||||
UI widgets we use.
|
||||
|
||||
## Versioning policy
|
||||
|
||||
We try to avoid breaking changes and the associated major version bumps in this package. The reason for that is to avoid the following scenario:
|
||||
|
||||
```
|
||||
|
|
||||
x 4.6.0: Adding RadioButton widget
|
||||
|
|
||||
x 5.0.0: Breaking change in the TextArea widget
|
||||
|
|
||||
x 5.0.1: Styling fix in the Checkbox widget
|
||||
|
|
||||
```
|
||||
|
||||
Suppose you just released version `5.0.1`, a small styling fix in the checkbox widget, for a story you're working on. If the project you're working in currently pulls in `noredink-ui` at version `4.x`, then getting to your styling fix means pulling in a new major version of `noredink-ui`. This breaks all `TextArea` widgets across the project, so those will need to be fixed before you can do anything else, potentially a big effort.
|
||||
|
||||
To prevent these big Yaks from suddenly showing up in seemingly trivial tasks we prefer to avoid breaking changes in the package. Instead when we need to make a breaking change in a widget, we create a new module for it `Nri.Ui.MyWidget.VX`. Similarly, when we build custom elements in JavaScript we create a file `lib/MyWidget/VX.js` and define a custom element `nri-mywidget-vX`.
|
||||
|
||||
We should change this process if we feel it's not working for us!
|
||||
|
||||
## Moving Widgets to `noredink-ui`
|
||||
|
||||
If you are moving in a widget from the monolith:
|
||||
- Copy the contents of `Nri.SomeModule` and its tests to `Nri.Ui.SomeModule.V1` in `noredink-ui`
|
||||
- Publish!
|
||||
- If you feel confident upgrading pre-existing usages of the widget, switch over to it everywhere!
|
||||
- If the new version introduces big changes and you'd rather keep the old one around for now, rename `Nri.SomeModule` to `Nri.DEPRECATEDSomeModule` in the monolith and start using `Nri.Ui.SomeModule.V1` where you need it
|
||||
|
||||
|
||||
## Phasing out old versions
|
||||
|
||||
Our goal is to gradually move to the newest version of each widget, and remove the old versions when they are no longer used.
|
||||
|
||||
This means:
|
||||
- We should avoid introducing new references to old versions of a widget
|
||||
- When touching code that uses a widget, prefer upgrading to the latest version
|
||||
- If you introduce a new version of a widget, please consider taking the time to upgrade all previous usages
|
||||
- If for some reason this isn't feasible, create a story in your team's backlog so that you can prioritize it separately without disrupting your current work
|
||||
- You can delete an old version of a widget when there are no usages left
|
||||
- Currently, `noredink-ui` is used by the monolith, CCS and tutorials
|
||||
- Note: this will be a major version bump, so you may want to batch deletions together
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
This repo contains an app showcasing all of these UI widgets.
|
||||
|
||||
To see them locally:
|
||||
|
||||
```
|
||||
script/develop.sh
|
||||
```
|
||||
|
||||
If you'd like to test your widget in the monolith before publishing, run `script/test-elm-package.py ../path_to_this_repo` from the monolith's directory.
|
||||
|
||||
## Tests
|
||||
|
||||
Run tests with
|
||||
|
||||
```
|
||||
make test
|
||||
```
|
||||
|
||||
### CI (Travis)
|
||||
|
||||
Travis will run `make ci` to verify everything looks good.
|
||||
You can run this locally to catch errors before you push!
|
||||
|
||||
## Deploying
|
||||
|
||||
Once your PR is merged, you can publish `master` as a new version:
|
||||
|
||||
Run the following to bump && publish the version in `elm.json`:
|
||||
|
||||
```
|
||||
elm bump
|
||||
```
|
||||
|
||||
Commit and push your changes in a PR. Once it's approved and merged,
|
||||
then:
|
||||
|
||||
```
|
||||
git tag -a 5.10.0 -m "release version 5.10.0"
|
||||
git push origin 5.10.0
|
||||
elm publish
|
||||
```
|
||||
|
||||
You can also add a tag in https://github.com/NoRedInk/noredink-ui/releases/new if you want to add more detail.
|
||||
|
||||
Once you've published, you should see the latest version at <https://package.elm-lang.org/packages/NoRedInk/noredink-ui/>.
|
||||
|
||||
## Developing with Nix
|
||||
|
||||
You can develop this package without installing anything globally by using Nix.
|
||||
To get started, install nix from [nixos.org/nix](https://nixos.org/nix/).
|
||||
|
||||
After that's set up in your shell (just follow the instructions at the end of the installation script) you can run `nix-shell` to get a development environment with everything you need.
|
||||
|
||||
If you find that inconvenient, try using [`direnv`](https://direnv.net/).
|
||||
Once that's set up, `echo use nix > .envrc` and then `direnv allow`.
|
||||
Anytime you enter the project your shell will automatically pick up the right dependencies.
|
||||
|
||||
If you find that `direnv` loads too slow, [there are faster loading strategies than the default in their wiki](https://github.com/direnv/direnv/wiki/Nix).
|
||||
|
||||
### Working with upstream dependencies
|
||||
|
||||
We use `niv` to manage Nix dependencies.
|
||||
It is automatically loaded in the Nix environment.
|
||||
|
||||
Here are some things you might need to do:
|
||||
|
||||
| Task | Command |
|
||||
|------|---------|
|
||||
| Add a non-npm, non-Elm dependency packaged with Nix | Look if it's in nixpkgs, or `niv add github.com/user/repo` |
|
||||
| Update Nixpkgs | `niv update nixpkgs` |
|
||||
| See all our dependencies | Look in `shell.nix` |
|
||||
| See all our sources | `niv show` |
|
||||
|
@ -1,121 +0,0 @@
|
||||
# noredink-ui
|
||||
|
||||
UI widgets we use.
|
||||
|
||||
## Versioning policy
|
||||
|
||||
We try to avoid breaking changes and the associated major version bumps in this package. The reason for that is to avoid the following scenario:
|
||||
|
||||
```
|
||||
|
|
||||
x 4.6.0: Adding RadioButton widget
|
||||
|
|
||||
x 5.0.0: Breaking change in the TextArea widget
|
||||
|
|
||||
x 5.0.1: Styling fix in the Checkbox widget
|
||||
|
|
||||
```
|
||||
|
||||
Suppose you just released version `5.0.1`, a small styling fix in the checkbox widget, for a story you're working on. If the project you're working in currently pulls in `noredink-ui` at version `4.x`, then getting to your styling fix means pulling in a new major version of `noredink-ui`. This breaks all `TextArea` widgets across the project, so those will need to be fixed before you can do anything else, potentially a big effort.
|
||||
|
||||
To prevent these big Yaks from suddenly showing up in seemingly trivial tasks we prefer to avoid breaking changes in the package. Instead when we need to make a breaking change in a widget, we create a new module for it `Nri.Ui.MyWidget.VX`. Similarly, when we build custom elements in JavaScript we create a file `lib/MyWidget/VX.js` and define a custom element `nri-mywidget-vX`.
|
||||
|
||||
We should change this process if we feel it's not working for us!
|
||||
|
||||
## Moving Widgets to `noredink-ui`
|
||||
|
||||
If you are moving in a widget from the monolith:
|
||||
- Copy the contents of `Nri.SomeModule` and its tests to `Nri.Ui.SomeModule.V1` in `noredink-ui`
|
||||
- Publish!
|
||||
- If you feel confident upgrading pre-existing usages of the widget, switch over to it everywhere!
|
||||
- If the new version introduces big changes and you'd rather keep the old one around for now, rename `Nri.SomeModule` to `Nri.DEPRECATEDSomeModule` in the monolith and start using `Nri.Ui.SomeModule.V1` where you need it
|
||||
|
||||
|
||||
## Phasing out old versions
|
||||
|
||||
Our goal is to gradually move to the newest version of each widget, and remove the old versions when they are no longer used.
|
||||
|
||||
This means:
|
||||
- We should avoid introducing new references to old versions of a widget
|
||||
- When touching code that uses a widget, prefer upgrading to the latest version
|
||||
- If you introduce a new version of a widget, please consider taking the time to upgrade all previous usages
|
||||
- If for some reason this isn't feasible, create a story in your team's backlog so that you can prioritize it separately without disrupting your current work
|
||||
- You can delete an old version of a widget when there are no usages left
|
||||
- Currently, `noredink-ui` is used by the monolith, CCS and tutorials
|
||||
- Note: this will be a major version bump, so you may want to batch deletions together
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
This repo contains an app showcasing all of these UI widgets.
|
||||
|
||||
To see them locally:
|
||||
|
||||
```
|
||||
script/develop.sh
|
||||
```
|
||||
|
||||
If you'd like to test your widget in the monolith before publishing, run `script/test-elm-package.py ../path_to_this_repo` from the monolith's directory.
|
||||
|
||||
## Tests
|
||||
|
||||
Run tests with
|
||||
|
||||
```
|
||||
make test
|
||||
```
|
||||
|
||||
### CI (Travis)
|
||||
|
||||
Travis will run `make ci` to verify everything looks good.
|
||||
You can run this locally to catch errors before you push!
|
||||
|
||||
## Deploying
|
||||
|
||||
Once your PR is merged, you can publish `master` as a new version:
|
||||
|
||||
Run the following to bump && publish the version in `elm.json`:
|
||||
|
||||
```
|
||||
elm bump
|
||||
```
|
||||
|
||||
Commit and push your changes in a PR. Once it's approved and merged,
|
||||
then:
|
||||
|
||||
```
|
||||
git tag -a 5.10.0 -m "release version 5.10.0"
|
||||
git push origin 5.10.0
|
||||
elm publish
|
||||
```
|
||||
|
||||
You can also add a tag in https://github.com/NoRedInk/noredink-ui/releases/new if you want to add more detail.
|
||||
|
||||
Once you've published, you should see the latest version at <https://package.elm-lang.org/packages/NoRedInk/noredink-ui/>.
|
||||
|
||||
## Developing with Nix
|
||||
|
||||
You can develop this package without installing anything globally by using Nix.
|
||||
To get started, install nix from [nixos.org/nix](https://nixos.org/nix/).
|
||||
|
||||
After that's set up in your shell (just follow the instructions at the end of the installation script) you can run `nix-shell` to get a development environment with everything you need.
|
||||
|
||||
If you find that inconvenient, try using [`direnv`](https://direnv.net/).
|
||||
Once that's set up, `echo use nix > .envrc` and then `direnv allow`.
|
||||
Anytime you enter the project your shell will automatically pick up the right dependencies.
|
||||
|
||||
If you find that `direnv` loads too slow, [there are faster loading strategies than the default in their wiki](https://github.com/direnv/direnv/wiki/Nix).
|
||||
|
||||
### Working with upstream dependencies
|
||||
|
||||
We use `niv` to manage Nix dependencies.
|
||||
It is automatically loaded in the Nix environment.
|
||||
|
||||
Here are some things you might need to do:
|
||||
|
||||
| Task | Command |
|
||||
|------|---------|
|
||||
| Add a non-npm, non-Elm dependency packaged with Nix | Look if it's in nixpkgs, or `niv add github.com/user/repo` |
|
||||
| Update Nixpkgs | `niv update nixpkgs` |
|
||||
| See all our dependencies | Look in `shell.nix` |
|
||||
| See all our sources | `niv show` |
|
@ -1,4 +1,3 @@
|
||||
[build]
|
||||
base = "lib/noredink-ui"
|
||||
command = "make public"
|
||||
publish = "lib/noredink-ui/public"
|
||||
publish = "public"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user