diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 56afb80b..d8ac798e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -34,8 +34,11 @@ You can help us translate the extension on [Transifex](https://www.transifex.com * Make any changes within a branch of this repository (not the `master` branch). * Submit a pull request and include a reference to the initial issue with the discussion. -## Scripts +## Build scripts +See [Build.md](../Build.md) for more information. + +* `npm test` - Run ESLint and web-ext lint test. Please run this command and ensure there is no syntax errors before sending a PR. * `npm run lint` - Run ESLint on all JavaScript files. * `npm run update` - Runs update-node & update-main scripts. * `npm run update-quick` - Updates development dependencies (uses `npm update`; does not include new dependencies). diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 00000000..9a4656a4 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,63 @@ +# Build this project + +## Preparation + +1. Install [Node.js](https://nodejs.org/en/). +2. Go to the project root, run `npm install`. This will install all required dependencies. + +## Generate the ZIP release + +Use the following command to generate a ZIP file that can be submitted to AMO or CWS: + +``` +npm run zip +``` + +The zip file includes all the files from the repository **except**: + +* All dot files (e.g. `.eslintrc` & `.gitignore`). +* `node_modules` folder. +* `tools` folder. +* `package.json` file. +* `package-lock.json` and/or `yarn.lock` file(s). + + + +## Tag a release/Bump the version + +Use the `npm version (major | minor | patch)` command to tag a release. + +There are some scripts that will run automatically before/after tagging a version. Includes: + +1. Test. +2. Update version number in `manifest.json`. +3. Generate the ZIP file. +4. Push the tag to github. + +## Translation + +We host transalation files (`message.json`) on Transifex. To pull files from Transifex, run + +``` +npm run update-locales +``` + +To push files to Transifex: + +``` +npm run update-transifex +``` + +## 3rd-party libraries + +3rd-party libraries are managed by `npm`. Since Stylus is built with vanilla JS, we only use libraries that can run in the browser. + +We keep a copy of these libraries inside the `vendor` directory so users can side-load this repository without executing the build script. These files are downloaded from CDN or pulled from npm (`node_modules`). + +To add/update a library to the latest version, run `npm install PACKAGE_NAME@latest`. + +To remove a library, run `npm uninstall PACKAGE_NAME`. + +After the (un)installation, run `npm run build-vendor` to rebuild the vendor folder. diff --git a/package.json b/package.json index 4157f6f1..20db9e24 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "zip": "node tools/zip.js", "start": "web-ext run", "preversion": "npm test", - "version": "sync-version manifest.json && git add ." + "version": "sync-version manifest.json && git add .", + "postversion": "npm run zip && git push --follow-tags" }, "engines": { "node": ">=10.0.0" diff --git a/vendor/README.md b/vendor/README.md deleted file mode 100644 index 9c519da7..00000000 --- a/vendor/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Vendor files are populated by the build script: - -## What the build script does - -Using this repo, run `npm install`... the latest versions of: - -* `CodeMirror` (https://github.com/codemirror/CodeMirror) is installed. -* `jsonlint` (https://github.com/zaach/jsonlint) is installed. -* `less` (https://github.com/less/less.js) is installed. -* `lz-string-unsafe` (https://github.com/openstyles/lz-string-unsafe) is installed. -* `semver-bundle` (https://github.com/openstyles/semver-bundle) is installed. -* `stylus-lang` (https://github.com/openstyles/stylus-lang-bundle) is installed. -* `usercss-meta` (https://github.com/StylishThemes/parse-usercss) is installed. -* The necessary build tools are installed; see `devDependencies` in the `package.json`. - -## Running the build script - -Use `npm run update` to first update the packages in the `node_modules` folder & then update the vendor folder. - -The following changes are made: - -* `CodeMirror`: Only existing files are updated directly from the `node_modules` folder; see the [CodeMirror readme](codemirror/README.md) for specifics. -* `jsonlint`: The uncompressed `lib/jsonlint.js` is copied directly to `vendor/jsonlint`. -* `less`: The compressed `dist/less.min.js` file is copied directly into `vendor/less`. -* `lz-string-unsafe`: The compressed `lz-string-unsafe.min.js` file is copied directly into `vendor/lz-string-unsafe`. -* `semver-bundle`: The `dist/semver.js` file is copied directly into `vendor/semver`. -* `stylus-lang-bundle`: The `stylus.min.js` file is copied directly into `vendor/stylus-lang-bundle`. -* `usercss-meta`: The `dist/usercss-meta.min.js` file is copied directly into `vendor/usercss-meta`. - -## Creating the ZIP - -Use `npm run zip`. - -This command creates a zip file that includes all the files from the repository **except**: - -* All dot files (e.g. `.eslintrc` & `.gitignore`). -* `node_modules` folder. -* `tools` folder. -* `package.json` file. -* `package-lock.json` and/or `yarn.lock` file(s). -* `vendor/codemirror/lib` files. This path is excluded because it contains a file modified for development purposes only. Instead, the CodeMirror files are copied directly from `node_modules/codemirror/lib`.