roosterjs is a framework-independent javascript rich text editor.
roosterjs is a framework-independent javascript rich text editor.
Rooster is a framework-independent JavaScript rich-text editor neatly nested inside one HTML `
B I
U
2. Navigate to editor.htm, you will see a editor shown in the page which includes buttons with bold, italic, underline
actions.
## Sample code
To view the demo site, please click [here](https://microsoft.github.io/roosterjs/index.html).
To build the demo site code yourself, follow these instructions:
1. Get dependencies using [yarn](https://yarnpkg.com) or [npm](https://www.npmjs.com/):
```cmd
yarn
```
2. Build the source code, and start the sample editor:
```
yarn start
```
or
```
npm start
…
yarn test
```
3. Run all tests from command line in Safari on macOS
```
safaridriver --enable
yarn test:safari
```
Safari's **Allow Remote Automation** setting must be enabled before running the command.
## Dependencies
As a NodeJs package, RoosterJs has dependencies for runtime (specified in package.json under each sub
packages in "dependencies" section) and dependencies for build time (specified in package.json under
root path in "devDependencies" section).
For runtime dependencies, there are two parts:
- Internal dependencies (a RoosterJs package depends on other RoosterJs packages)
- External dependencies (RoosterJs depends on other NPM packages)
Currently we have very few external dependencies. Before adding any new dependency, we need to check:
1. What's the value of the new dependency and the code using the dependency bring into roosterjs?
If we add a new dependency and create our new API to just call into the dependency, that new API
doesn't actually bring too much value, and people who uses roosterjs in their project can do this
themselves in their code, and we should not add such dependency to people who don't really need it.
2. What's the dependency tree of the dependency?
If we introduce a new dependency which has a deep dependency tree, we need to be careful since it
means we are actually adding a lot of new dependencies and our code size may be increased a lot.
3. How much functionalities do we need from the dependency?
If the dependency provides a lot of functionalities but we actually only need a small piece of them,
we may need to consider other solutions, such as find another smaller one, or do it ourselves.
4. What's the license of the dependency?
A dependency package under MIT license is good to be used for RoosterJs. For other licenses, we need
to review and see if we can take it as a dependency.
If you still feel a new dependency is required after checking these questions, we can review it and
finally decide whether we should add the new dependency.
For build time dependencies, it is more flexible to add new dependencies since it won't increase runtime
code size or dependencies.
## More documentation
We are still working on more documentation in [roosterjs wiki](https://github.com/Microsoft/roosterjs/wiki) and [API reference](https://microsoft.github.io/roosterjs/docs/index.html).
## License - MIT
License
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [MIT](LICENSE) License.No open issues yet, or sync has not completed.