OLD | NEW |
1 Shared Adblock Plus UI code | 1 Shared Adblock Plus UI code |
2 =========================== | 2 =========================== |
3 | 3 |
4 The user interface elements defined in this repository will be used by various | 4 The user interface elements defined in this repository will be used by various |
5 Adblock Plus products like Adblock Plus for Firefox. Their functionality can be | 5 Adblock Plus products like Adblock Plus for Firefox. Their functionality can be |
6 tested within this repository, even though they might not work exactly the same | 6 tested within this repository, even though they might not work exactly the same |
7 as they will do in the final product. | 7 as they will do in the final product. |
8 | 8 |
9 Installing dependencies | 9 Installing dependencies |
10 ----------------------- | 10 ----------------------- |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 76 |
77 Remember, both `eslint` and `stylelint` can help fixing issues via `--fix` flag. | 77 Remember, both `eslint` and `stylelint` can help fixing issues via `--fix` flag. |
78 | 78 |
79 You can try as example via [npx](https://medium.com/@maybekatz/introducing-npx-a
n-npm-package-runner-55f7d4bd282b) | 79 You can try as example via [npx](https://medium.com/@maybekatz/introducing-npx-a
n-npm-package-runner-55f7d4bd282b) |
80 which should be provided automatically when you install `npm`. | 80 which should be provided automatically when you install `npm`. |
81 | 81 |
82 ```sh | 82 ```sh |
83 npx stylelint --fix skin/real-file-name.css | 83 npx stylelint --fix skin/real-file-name.css |
84 ``` | 84 ``` |
85 | 85 |
86 Bundling | 86 Bundling JS |
87 -------- | 87 ----------- |
88 | 88 |
89 As it is for the `desktop-options.js` case, bundling is done via `package.json` | 89 As it is for the `desktop-options.js` case, bundling is done via `package.json` |
90 script entries. | 90 script entries. |
91 | 91 |
92 A dedicated script entry, such `bundle:desktop-options`, | 92 A dedicated script entry, such `bundle:desktop-options.js`, |
93 should perform the following operations: | 93 should perform the following operations: |
94 | 94 |
95 * ensure source code passes linting | 95 * ensure source code passes linting |
96 * ensure the bundle won't affect future linting operations | 96 * ensure the bundle won't affect future linting operations |
97 * ensure `browserify` uses `--node` and `--no-bundle-external` flags | 97 * ensure `browserify` uses `--node` and `--no-bundle-external` flags |
98 * point at the entry point, and output in the top level folder | 98 * point at the entry point, and output in the top level folder |
99 | 99 |
100 Accordingly, this is what happens with the `bundle:desktop-options`: | 100 Accordingly, this is what happens with the `bundle:desktop-options.js`: |
101 | 101 |
102 ```sh | 102 ```sh |
103 # the && operator ensure each step is executed only | 103 # the && operator ensure each step is executed only |
104 # if the previous one didn't produce an error | 104 # if the previous one didn't produce an error |
105 eslint ./js/**/*.js && | 105 eslint ./js/**/*.js && |
106 # browserify doesn't offer a way to prefix with text | 106 # browserify doesn't offer a way to prefix with text |
107 # the file is hence created with eslint disabled and a warning | 107 # the file is hence created with eslint disabled and a warning |
108 echo '/* eslint-disable */// BUNDLED FILE' > ./desktop-options.js && | 108 echo '/* eslint-disable */// BUNDLED FILE' > ./desktop-options.js && |
109 # browserify take an entry point and bundle all its required files | 109 # browserify take an entry point and bundle all its required files |
110 # outputting the result into ./desktop-options.js | 110 # outputting the result into ./desktop-options.js |
111 browserify --node --no-bundle-external js/desktop-options.js >> ./desktop-option
s.js | 111 browserify --node --no-bundle-external js/desktop-options.js >> ./desktop-option
s.js |
112 ``` | 112 ``` |
113 | 113 |
114 For a new bundle, i.e. `mobile-options.js`, simply use the same procedure | 114 For a new bundle, i.e. `mobile-options.js`, simply use the same procedure |
115 but swap the `desktop-options` file/script name with `mobile-options`. | 115 but swap the `desktop-options.js` file/script name with `mobile-options.js`. |
116 | 116 |
117 The main `bundle` script should include each sub-bundle operation. | 117 The main `bundle` script should include each sub-bundle operation. |
118 | 118 |
| 119 Bundling CSS |
| 120 ------------ |
| 121 |
| 122 As it is for the `desktop-options.css` case, bundling is done via `package.json` |
| 123 script entries. |
| 124 |
| 125 A dedicated script entry, such `bundle:desktop-options.css`, |
| 126 should point at the entry scss point, and output in the _skin_ folder; |
| 127 |
| 128 In case there are dependencies, please ensure these are |
| 129 imported via `@import "dep.scss"` and not via `url(...)` syntax. |
| 130 |
119 Watching | 131 Watching |
120 -------- | 132 -------- |
121 | 133 |
122 While developing, it is convenient to bundle automatically | 134 While developing, it is convenient to bundle automatically |
123 each time a source file is changed. | 135 each time a source file is changed. |
124 | 136 |
125 As a team, we agreed on restructuring JS code inside the js folder, | 137 As a team, we agreed on restructuring JS code inside the js folder, |
126 so that is watched, and each bundled created, every time there is a changes. | 138 so that is watched, and each bundled created, every time there is a changes. |
127 | 139 |
128 Similarly done for bundles, watches follow the following convention: | 140 Similarly done for bundles, watches follow the following convention: |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 errors when adding new filters on the options page | 205 errors when adding new filters on the options page |
194 * `blockedURLs`: a comma-separated list of URLs that should be considered | 206 * `blockedURLs`: a comma-separated list of URLs that should be considered |
195 blocked (necessary to test the check for blocked scripts in sharing buttons). | 207 blocked (necessary to test the check for blocked scripts in sharing buttons). |
196 * `downloadStatus`: sets downloadStatus parameter for filter lists, can be used | 208 * `downloadStatus`: sets downloadStatus parameter for filter lists, can be used |
197 to trigger various filter list download errors | 209 to trigger various filter list download errors |
198 * `platform=chromium`: shows the opt-out for the developer tools panel | 210 * `platform=chromium`: shows the opt-out for the developer tools panel |
199 * `showNotificationUI=true`: simulates user having opted-out of notifications | 211 * `showNotificationUI=true`: simulates user having opted-out of notifications |
200 | 212 |
201 | 213 |
202 [crowdin]: https://crowdin.com | 214 [crowdin]: https://crowdin.com |
OLD | NEW |