Add: BUILD.md
This commit is contained in:
parent
f22b313751
commit
0515c7d6d2
5
.github/CONTRIBUTING.md
vendored
5
.github/CONTRIBUTING.md
vendored
|
@ -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).
|
||||
|
|
63
BUILD.md
Normal file
63
BUILD.md
Normal file
|
@ -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).
|
||||
|
||||
<!-- FIXME: is this statement still true?
|
||||
* `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`.
|
||||
-->
|
||||
|
||||
## 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.
|
|
@ -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"
|
||||
|
|
41
vendor/README.md
vendored
41
vendor/README.md
vendored
|
@ -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`.
|
Loading…
Reference in New Issue
Block a user