Additionally a bump to grunt-image and grunt itself for security
reasons. Also, commit package-lock.json, which is what we do now.
Change-Id: I2beab15d7f5b1453ccbb3c46b6dd0800c78ed15b
New changes:
2915330a9 Avoid JSON strings in built demo files
62b0b1298 Move server files to /src
ddd99ab0c MediaSizeWidget: Add #updateDisabled() for disableable sub-widgets
Bug: T204185
Change-Id: Ied5b39608683ba7c9f056430a0a248f41e089d5a
We have a Jenkins job to take screenshots of VisualEditor and upload the
result to commons.wikimedia.org. That roughly does:
npm install
node_modules/.bin/grunt screenshots-all
bundle install
bundle exec upload
However on CI, the Docker container only accepts 'npm run-script XXX' or
'bundle exec rake YYY'.
Add a npm script 'screenshots-all' invoking 'grunt screenshots-all'.
Add a rake task 'commons_upload'. I have added a basic check to make
sure environment variables are properly set before invoking the upload
script.
Thus on CI the usage will become:
npm install
npm run-script screenshots-all
bundle install
bundle exec rake commons_upload
Which match the CI convention.
Bug: T189122
Change-Id: I221ed8d6178dd036eac287f0f811834a6d4ffd22
Making use of SVGO for further minification of
the included SVGs, based on MediaWiki's SVG Coding Conventions.
Also:
- Updating 'grunt image' to the latest version
- Improving SVGs accordingly
Bug: T185596
Change-Id: I882f0c6e2b5011fd51edb6106a3e22581989b834
New changes:
c54a48a build: Fix watch list (csslint -> stylelint)
58ba3d9 Add stylelint rules for @-rules
3f8c75a Stylelint: Add rule for unsupported browser features
3b96ff3 Fix minimum Opera version (15 -> 12)
9a1110b Stylelint: No ID selectors
9800bb8 build: Remove remaining references to csslint
b6ab14a stylelint: Re-enable features by names
6cc1f3c Move stylelint to npm
1d15fa0 build: Bump stylelint version to v0.2.0
ccc1724 stylelint: Use the preset rather than extending
Change-Id: I22fa8098592338a5e912aba9ad21131b21d9c0ea
For now just use the rules file in lib/ve, but eventually
this will be a preset.
Change-Id: I7fd79d3e1dce37aef066d416cd969e5fff1e962f
Depends-On: I17e0d23ddfedf64985495ab35d113ea08c03b1df
* grunt-contrib-jshint: 0.11.3 -> 0.12.0
This version of the linter cleans up a number of options. 'es5' is now assumed to be
true by default, and replaced as 'esversion'; 'latedef' is extended to also cover
functions' defintions, disabled for us for now; 'futurehostile' is introduced to aid
future-incompatible names for ES6+ support.
I adjusted ve.init.mw.DesktopArticleTarget.init.js based on this, as this file is
meant to be loaded by all JS-capable clients to determine if it is (amongst other
things) capable of ES5, so now we assert ES3 compatibility via jshint.
* grunt-jscs: 2.5.0 -> 2.7.0
Minor version bump that doesn't affect us.
* grunt-jsonlint: 1.0.6 -> 1.0.7
Trivial version bump that doesn't affect us.
Change-Id: Ieb7b6748b0cecf275cfc284fc66617189372461f
So many old keys not yet removed. Oy. Also, disable disallowDuplicateTranslations
for now as this fails so much.
Change-Id: I52e1555335a6e64b1e9db541ba726cf6ce8c7dd0
grunt-jscs: 0.7.1 -> 0.8.1
No-op; note that this switches us from jscs 1.6.0 to 1.7.2, which provides
some new options (unused in the Wikimedia preset).
Change-Id: I1d0db2568ff673ff8b8bba9549b06c005eb7186b
This isn't a node.js package, but simply the packages for the
workflow in developing the extension.
This repo already has other entry points and outings for this
information.
Change-Id: Ide13e863546e6efda61086e3daf9cdfe4ed5f1ac
Our coding style has been upstreamed and first released
in node-jscs v1.5.0 (grunt-jscs-checker v0.6.0).
Change-Id: Ifc0cfc7177946b9d11407f60e38b0177883724c5
* Use jshintrc:true which lets grunt defer autodiscovery of the file
to jshint instead of forcing it to '.jshintrc'. This allows us to
override certain settings from a subdirectory, to match behaviour
of standalone jshint.
* Sort modules.
* Use plain string instead of single-value array.
Change-Id: Ib5cd48f3ff0367b8fc84627c29e4fb32452087c0
jshint:
* Update to grunt-contrib-jshint v0.10.0 (jshint v2.5.0).
* Remove coding style options covered by jscs.
* Enable new option "freeze" (prohibits changing native prototypes).
http://www.jshint.com/blog/new-in-jshint-oct-2013/#option-freeze
* Re-order to match http://www.jshint.com/docs/options/
jscs:
* Update to grunt-jscs-checker v0.4.4 (jscs v1.4.5).
* Format .jscsrc file in a more spacious way and order the
properties less arbitrarily (using the jscs's readme order).
* Enforce more details of our coding style
* Get rid of the unsable "sticky" operator rules which have been
deprecated in favour of using other rules instead that are able
to enforce this more accurately.
- disallowLeftStickedOperators: Remove deprecated rule.
* Ternary covered by requireSpacesInConditionalExpression.
* Rest covered by requireSpace{Before,After}BinaryOperators.
- requireLeftStickedOperators: Remove deprecated rule.
* Comma covered by disallowSpaceBeforeBinaryOperators.
- requireRightStickedOperators: Remove deprecated rule.
* Logical not (!) covered by disallowSpaceAfterPrefixUnaryOperators.
See also If46b94ce1, Ib731f11b1 and I0b0cadbc5 in oojs/core.
Also:
* Update grunt-contrib-watch to latest upstream version.
Change log at https://github.com/gruntjs/grunt-contrib-watch/blob/v0.6.1/CHANGELOG#L1-L17
Change-Id: I6c5a34afea8b05a3dca617897c192594df06ca90
* Add lib/ve.
* Remove modules provided by VisualEditor core.
* Update paths.
* Remove VisualEditor core specific things from Gruntfile.
* Remove entries from external.js already in lib/ve/.docs/external.js.
* Implement build script to compose a jsduck index that includes
all of VisualEditor core. Right now it includes VisualEditor's
index as-is, and because those patterns (e.g. ve.dm.*Node) will
also MW subclasses this means our category page will include
MW classes under "VisualEditor (core)" (before the repo split,
this was intentional).
This is inevitable unless we list every class individually, or
(the plan) until we move the MW subclasses out of the ve.*
namespace and into mw.* somewhere.
Bug: 45342
Change-Id: Iff45cd555430634c9fc341fd3b177c1e0625300b
Use built-in jshintrc option for 'jshint' config instead of
parsing manually and strippig comments.
node-jshint itself has supported comment parsing for a long time
(which is why our Jenkins build, which doesn't even use grunt,
has no problem with our .jshintrc file).
But the grunt task never exposed this parser, until v0.6.4.
Change-Id: Ia45a44ac49c943845a11d3fc7a0127776e99ed2a
Let's experiment with this via our local Gruntfile. If it works
fine we can install it in Jenkins (similar to node-csslint).
Verify through $ npm install && npm test;
Fixed all outstanding violations.
Also:
* Added syntaxhighight to ignore.
* Added imetests (which contain unformatted JSON) to ignore.
* In ve.dm.ModelRegistry#matchTypeRegExps, removed redundant
!! cast from the [+!!withFunc] statement which was hitting
a bug in node-jscs. All callers to this local private function
pass a literal boolean true/false so no need to cast it.
* Removed "/* key .. , value */" from ve.setProp, though this
wasn't caught by node-jscs, found it when searching for " , ".
* Made npm.devDependencies fixed instead of using tilde-ranges.
This too often leads to strange bugs or sudden changes. Fixed
them at the version they were currently ranging to.
Bug: 54218
Change-Id: Ib2630806f3946874c8b01e58cf171df83a28da29
Describe how to report bugs, install grunt, and run tests.
Update jsduck instructions.
Fix path to license file in package.json.
Change-Id: I276ff0ea4324f027dafc044a86fa564b2439089a
This has no influence on Jenkins but can be used locally to
easily run certain tools. Since we already had `.jshintrc` in
our repo it was already possible to easily run JSHint from
the command-line locally. Taking that as a base the following
are new features:
* `grunt csslint`: Runs CSSLint on all css files
* `grunt qunit`: Runs QUnit (standalone) tests in PhantomJS
* `grunt test`: Runs jshint/csslint/qunit
* `grunt watch`: Runs the "test" command automatically whenever
a file is changed. You can keep this in the background so
whenever you save a file in your editor (e.g. Sublime Text)
it'll run the tests and if there is a failure, it'll throw a
bash error code causing your Terminal application to beep you
in whatever way your operating system does so (e.g. for
Mac OS X a red badge + jumping icon in the Dock). It will
continue to run in the background even after a failure so no
need to re-start watch after a failure.
* `grunt`: Runs the default task, which is 'test'.
Previously to use `jshint .` you had to:
* One-time install:
* install package -- nodejs npm
* npm install -g jshint
* Usage:
* cd VisualEditor; jshint .
Now, for grunt:
* One-time install:
* install package -- nodejs npm
* npm install -g grunt-cli
* cd VisualEditor; npm install
* Usage:
* cd VisualEditor; grunt
Change-Id: I7a4fdf4b6bf3f00cef15dc3e2c81eceb595aec7c