If you wish to contribute to AlloyEditor these guidelines will be important for you. They cover instructions for setup, information on how the repository is organized, as well as contribution requirements.
TBD
master
: active development branch.stable
: points to the latest release; may be used as a base for preparing urgent hotfix releases.1.x
: previous active development branch for prior major version (1.x series, unlikely to be updated).1.x-stable
: points to the latest 1.x release (unlikely to be updated).
With each major version release, new maintenance branches are created, and future development continues on "master". For example, when 3.0 is released, we will create "2.x" and "2.x-stable" branches, and proceed with development on "master", updating "stable" with each 3.x.y release.
- dist/alloy-editor: target directory where bundles (alloy-editor-all.js and friends) are built.
- lib/ckeditor: source files from upstream CKEditor project.
- lib/lang: language strings from upstream CKEditor project.
- src/adapter/main.js: defines the top-level
AlloyEditor
API. - src/assets/lang: defines AlloyEditor-specific strings.
- src/assets/lang/language.json: the canonical list of strings to be translated (via Crowdin); add new strings here.
- src/components: React components for buttons and toolbars.
- src/generated/lang: language files generated by
npm run build:assets
, combining strings specific to AlloyEditor (defined in "src/assets/lang") and upstream strings from CKEditor (defined in "lib/lang"), available asAlloyEditor.Strings
. - src/plugins: CKEditor plugins for resizing, aligning, and so on.
- test: the test suite.
- All pull requests should be sent to the
master
branch. Thestable
branch always reflects the most recent release. - Any merged changes will remain in the
master
branch until the next scheduled release. - The only exception to this rule is for emergency hot fixes, in which case the pull request can be sent to the
stable
branch. - A Github issue should also be created for any bug fix or feature, this helps when generating the CHANGELOG.md file.
- All commits in a given pull request should start with the
Fixes #xxx -
message for traceability purposes.
Any change (be it an improvement, a new feature or a bug fix) needs to include a test, and all tests from the repo need to be passing. To run the tests you can use our npm script:
npm test
This will run the complete test suite on Chrome. For a full test pass, you can add local browsers to the root karma.js
file and re-run the command.
Additionally, you can also run the test suite via Saucelabs with the following npm script:
npm testSaucelabs
This last command is the one used by our CI integration.
TBD
All methods should be documented, following Google's format.
Collaborators with publish permissions should follow these steps.
git checkout master
git pull upstream master
npm run checkFormat # fix with `npm run format` if necessary
npm run lint:quiet
npm run build
npm run test
As noted above, if and only if this is a major release, this is also the time to create the corresponding maintenance branches:
git branch 2.x
git branch 2.x-stable
git push upstream 2.x
git push upstream 2.x-stable
npm version --no-git-tag-version patch|minor|major
Note: the use of --no-git-tag-version
because we want to apply the tag only after we have updated the changelog and see our PR pass in CI.
4. Generate changelog with github_changelog_generator
gem install github_changelog_generator # using `sudo` if necessary
github_changelog_generator liferay/alloy-editor -t $GITHUB_ACCESS_TOKEN
The $GITHUB_ACCESS_TOKEN
can be generated at github.com/settings/tokens/new, and only needs minimal capabilities ("repo:status", "repo_deployment", "public_repo" should suffice).
git add CHANGELOG.md
git commit -m "Updates CHANGELOG for vX.X.X"
git pull --ff-only upstream master
npm run build
With a $VERSION
of the format "vX.Y.Z" matching the one in the "package.json" file:
git tag $VERSION -m $VERSION
npm publish --dry-run # Final sanity check.
npm publish
git push --follow-tags upstream
git checkout stable
git merge master # generally, will be a fast-forward merge
git push upstream stable
11. Update GitHub release information using the pushed vX.X.X tag and the appropriate portion of CHANGELOG.md
See the Releases listing on GitHub.
1. Open your favourite browser and navigate to https://ckeditor.com/cke4/builder.
This will open a file dialog letting you choose CKEditor's build configuration file:
This file is located in lib/ckeditor/build-config.js
, select it to upload it.
On the left you'll see the list of selected plugins (automatically detected by parsing the build-config.js
file uploaded previously) and on the right a list of the available plugins. Click on the plugins you wish to add and on the left arrow button ("<"), this will add the new plugins into the "selected plugins" panel.