Commit graph

117 commits

Author SHA1 Message Date
Ed Sanders 8ea820ab43 build: Update devDependencies
grunt-mocha-test     0.12.7  →  0.13.3
 grunt-stylelint      0.10.0  →  0.10.1
 jimp                 0.2.28  →   0.5.0

Change-Id: Ic2b1bcefdce6e8f71c623eec877151b7233c9556
2018-09-15 21:45:49 +01:00
James D. Forrester b2b352836d build: Bump eslint-config-wikimedia from 0.7.2 to 0.8.1
Change-Id: Ide036b52b394e1b3b6f5493406a3633bd89e2cc5
2018-09-10 08:49:10 -07:00
James D. Forrester 4755d7f1be build: Upgrade eslint-config-wikimedia to 0.7.2 and simplify config
Change-Id: Ib78c51a177b9f4b4764587232c7d32ffcfdd8aca
2018-08-14 11:02:20 -07:00
James D. Forrester 6e71e1c0c3 build: Bump devDependencies related to the screenshots task
This fixes a bunch of warnings from `npm audit`.

Change-Id: I31321f2f19421944787279923e010f8093789d5e
2018-07-09 10:50:40 -07:00
James D. Forrester ceab9e6510 build: Bump linters for eslint 5 and make pass
Change-Id: I88627028e5806c2fdceb76fd26bcb57d44ed4c20
2018-07-06 10:58:18 -07:00
Ed Sanders a7f5a76bca build: Introduce eslint-plugin-qunit
Change-Id: I0a169916eaf260500ca6a172e6fb2b0c61f8d422
2018-05-30 21:04:02 +01:00
James D. Forrester c07d4815e3 build: Follow-up 99d3320573: Drop babel-polyfill, never used
Change-Id: I3eccd0c345b2c528bbb9458d404a3e0c91ae88f5
2018-04-25 12:59:50 -07:00
James D. Forrester 3e8f2edc83 build: Bump some devDependencies to latest
grunt                        1.0.1  →          1.0.2
 grunt-contrib-watch          1.0.0  →          1.0.1
 grunt-image                  4.1.0  →          4.2.0
 grunt-stylelint              0.9.0  →         0.10.0
 stylelint                    8.2.0  →          9.2.0
 stylelint-config-wikimedia   0.4.2  →          0.4.3

Leaving babel-polyfill, grunt-mocha-test, jimp, mocha and selenium-webdriver
alone for now.

Change-Id: Ibea983670108a56ddbf748e140831147e31da329
2018-04-25 12:35:07 -07:00
Antoine Musso 2aadc18105 build: npm/rake entry point for screenshots upload
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
2018-03-07 23:23:30 +01:00
Volker E 4194d2ea63 build: Use SVGO option of 'grunt-image'
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
2018-02-08 17:41:11 +00:00
Ed Sanders 7e055832b9 build: Update linters
Change-Id: Idafc3989c43613fdc4ea9da66495fc4003f7f549
2018-02-04 22:11:22 +00:00
Ed Sanders dc3ed6cec0 build: Update stylelint 0.4.1->0.4.2
Change-Id: I9d67e4224eb6298e20574a201eeee559ab3a7504
2017-10-26 21:04:07 +01:00
Ed Sanders 9ebff2fb12 build: Update eslint-config-wikimedia 0.4->0.5
Change-Id: I57b017752cc377f3e8cc4e6163bebfecd878ae51
2017-08-25 16:08:08 +01:00
Ed Sanders 835a775a49 build: Upgrade grunt-eslint from 19.0.0 to 20.0.0
Mostly indent and regex fixes.

Change-Id: Iaf9d02363c78cb71deec5c4cab53a05b67f60600
2017-07-18 12:55:33 +01:00
James D. Forrester f7e5ebb845 build: Bump a couple of devDependencies to latest
grunt-banana-checker   0.5.0  →   0.6.0
 grunt-stylelint        0.7.0  →   0.8.0

Added stylelint peerdependency directly.

Change-Id: Ib5da82ae60f4f49e572459c8e53f9125ad422ee8
2017-07-06 13:40:38 -07:00
Ed Sanders a866678c36 build: Update eslint to 0.4.0 and make pass
Change-Id: Id02a26bad70504cfe90bee6aab0fa3ea646b15d7
2017-05-04 21:28:17 +00:00
Umherirrender a16812428e Use tabs to indent in json
Change-Id: Ib0372c86bcaac368f4dd68a512273b504ca9b6b2
2017-03-31 23:50:07 +02:00
James D. Forrester dddd2c0180 build: Bump grunt-jsonlint to latest and make pass
grunt-jsonlint       1.0.8  →   1.1.0

Change-Id: I4a5cdd39f6215cc61a1ef530386a87fdcb0c0088
2017-02-17 16:12:12 -08:00
James D. Forrester cc239a08da build: Bump stylelint and make pass
grunt-stylelint              0.6.0  →   0.7.0
 stylelint-config-wikimedia   0.3.0  →   0.4.1

Change-Id: Id87b8df04d415e1f1058a4042a31408236402037
2017-02-17 15:23:12 -08:00
Ed Sanders 8a64006aa4 Introduce grunt-image to minify screenshots
Makes the task a bit slower (~50%) but image filesizes
are reduced by 75% on average.

Change-Id: I90b7a4b7b4a1e4d3452d4e791fef55cdfc780f94
2017-02-03 15:19:12 +00:00
James D. Forrester f24e34de3c build: Bump eslint-config-wikimedia to v0.3.0 and make pass
Change-Id: I7449c11aa63c50fda667265c32021439cc53471f
2016-11-15 15:05:05 -08:00
James D. Forrester 36befda61c build: Replace jscs and jshint with eslint
It's new, it's fresh, it's amazing, it's here.

Change-Id: I5dc784411f704685ed5cc763a2b2b1c5d3e5a610
2016-10-28 18:33:15 +00:00
James D. Forrester 1840f4fc71 build: Bump stylelint-related devDependencies to latest
grunt-stylelint              0.4.0  →   0.6.0
 stylelint-config-wikimedia   0.2.2  →   0.3.0

Change-Id: Ib7494b63fa8faa84ca0be69321d5888d5af9048f
2016-08-03 18:52:26 +00:00
James D. Forrester 7b6ae3710c build: Downgrade grunt-jscs to 2.8.0 to avoid cst bug
Bug: T140367
Change-Id: Ice3afeefda8628ec9b0f4f72379770b484a2cb11
2016-07-14 08:48:38 -07:00
Ed Sanders 746321a29f Add screenshots grunt task for taking documentation screenshots
Imported from https://github.com/zeljkofilipin/language-screenshots

Bug: T119482
Bug: T132574
Co-authored-by: Željko Filipin <zeljko.filipin@gmail.com>
Change-Id: Idade622d1f3db0eb4b5f3fbc1a0eee401feeb600
2016-06-27 12:19:35 +01:00
James D. Forrester 5ecf40f51e build: Bump devDependencies to latest and make pass
babel-polyfill              6.8.0  →  6.9.1
 grunt-jscs                  2.8.0  →  3.0.0
 grunt-jsonlint              1.0.7  →  1.0.8
 grunt-stylelint             0.3.0  →  0.4.0
 stylelint-config-wikimedia  0.2.0  →  0.2.2

Change-Id: I4db467c7f2bc291a94e7bab86d18e48a44f6054c
2016-06-07 17:17:02 +01:00
jenkins-bot 5698e855e3 Merge "Update stylelint config version and make a pass" 2016-05-24 21:40:41 +00:00
Ed Sanders 88c8f2e389 Remove grunt-cli
Included by grunt.

Change-Id: Ibf76b74ff50d6011da3061b2634c2ef4d7a3c843
2016-05-24 17:30:12 +00:00
Ed Sanders 7b8931193a Update stylelint config version and make a pass
Change-Id: I58007c3976019c8cfe96fd1fc0474d9e80f99f64
2016-05-24 13:41:13 +01:00
James D. Forrester 94fcafb684 build: Bump grunt-stylelint to v0.3.0
Change-Id: I8e6eb487a1ae181c9279aaf2c0aec5cccc8d9427
2016-05-19 19:04:10 +01:00
James D. Forrester 8c7ed92288 Update VE core submodule to master (eeaf1e2)
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
2016-05-18 07:06:53 +01:00
Ed Sanders 1dc780bcbd build: Use grunt-stylelint from npm
Add .stylelintrc as a symlink

Change-Id: I3c6d3f7f988f59b12655627e67ffb61fc7f882cd
2016-05-17 16:24:39 +01:00
Ed Sanders 99d3320573 build: Replace csslint with stylelint
For now just use the rules file in lib/ve, but eventually
this will be a preset.

Change-Id: I7fd79d3e1dce37aef066d416cd969e5fff1e962f
Depends-On: I17e0d23ddfedf64985495ab35d113ea08c03b1df
2016-05-16 22:30:49 +01:00
James D. Forrester 5308a47e96 build: Bump various devDependencies to latest
grunt                  0.4.5  →  1.0.1
 grunt-cli             0.1.13  →  1.2.0
 grunt-banana-checker   0.4.0  →  0.5.0

Change-Id: Idcd66807d03c85005ca97f5563251e814d15813b
2016-04-19 01:37:25 +00:00
James D. Forrester 8ee5c6f818 build: Bump devDependencies to latest
grunt-contrib-watch  0.6.1  →  1.0.0

Change-Id: Ieea149cd930e470ec7f63e7c5cc75aef60a5a271
2016-03-17 19:42:41 +00:00
James D. Forrester ee9e6cb20e build: Bump all devDependencies to latest
* grunt-contrib-copy: 0.8.2 -> 1.0.0
* grunt-contrib-csslint: 0.5.0 -> 1.0.0
* grunt-contrib-jshint: 0.12.0 -> 1.0.0
* grunt-jscs: 2.7.0 -> 2.8.0

Change-Id: I8c4b3e1ad4e10217e9e048eacd8dedc8fe5caf02
2016-03-10 08:19:48 -08:00
James D. Forrester e6e492efc6 build: Bump various devDeps to latest and make pass
* 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
2016-02-07 19:41:21 -08:00
James D. Forrester 90045db7a3 build: Update various devDependencies to latest
* grunt-contrib-copy     : 0.8.0 -> 0.8.2
* grunt-jsonlint         : 1.0.4 -> 1.0.6
* grunt-jscs             : 2.1.0 -> 2.5.0

Change-Id: Ia66996d4ccf48bb8baab792fda5cd67863b31575
2015-12-11 12:59:17 -08:00
James D. Forrester fe8a9eff91 build: Add grunt-tyops
Change-Id: Idb30814e69356eb2b3282fae018c142295df922f
2015-12-09 00:53:34 +00:00
Kunal Mehta 7e0b5c9323 build: Updating development dependencies
* grunt-banana-checker: 0.3.0 → 0.4.0

Change-Id: I35ed93e20da10717e232cfbaa27453500adc6dba
2015-10-11 12:21:37 -04:00
Ed Sanders 02bb49c12e build: Update CSSLint from 0.4.0 to 0.5.0
Change-Id: Ide9d1ac96a9b1eb94b0c01ef8e8665ab75aa00a8
2015-09-18 17:15:23 +00:00
James D. Forrester 78b415cc69 build: Upgrade grunt-banana-checker to v0.3.0
So many old keys not yet removed. Oy. Also, disable disallowDuplicateTranslations
for now as this fails so much.

Change-Id: I52e1555335a6e64b1e9db541ba726cf6ce8c7dd0
2015-09-07 11:59:50 -07:00
James D. Forrester efe7270819 build: Bump grunt-contrib-jshint from 0.11.2 to 0.11.3 to fix upstream issue
Change-Id: I6215f90dd501a7bc27b47f21130567893709cc4a
2015-09-03 14:11:01 -07:00
James D. Forrester 2efec36a10 build: Bump jscs devDependency from 1.8.0 to 2.1.0
Change-Id: I75a99990c61d7f1f0a963f003c0e8bdb9c5215b6
2015-08-19 10:25:11 -07:00
Kunal Mehta f41310ab4c build: Configure jsonlint
Change-Id: I25a0010aa023bc3b70f24e9f30ffef3be88f965f
2015-06-13 01:14:38 -07:00
Kunal Mehta 852ac522d7 build: Updating development dependencies
* grunt-banana-checker: 0.2.1 → 0.2.2

Change-Id: I4bbf9709c48f22550ec8e36af11b737ebf6b92c2
2015-06-06 00:11:02 +00:00
James D. Forrester a69dcae3ab build: Bump various devDependencies
grunt-contrib-jshint:	0.11.0 -> 0.11.2
	grunt-jscs:				1.5.0 -> 1.8.0

Bug: T90816
Change-Id: I294bd46b2ce48b3839c4e6b200db08e935933379
2015-04-29 08:58:24 -07:00
Timo Tijhof f08788acf8 build: Declare grunt-cli dependency
Change-Id: I6a7fafa3c6e40d2407f07c514167ab9fc7661685
2015-04-06 16:32:58 +00:00
Timo Tijhof 1082249691 build: Move pre/post 'doc' task into package.json
Standard entry point.

Change-Id: Ic6cdc9ac1b266a64dcb1522ac36132c5ef844d3c
2015-04-06 17:18:29 +01:00
James D. Forrester 664b90bb87 build: Update grunt-banana-checker to v0.2.1
Change-Id: If3954c2a01117df036ffe89df2f37044a32f6a41
2015-03-27 16:41:56 -07:00
James D. Forrester 5db66faea9 build: Update jscs to latest
Change-Id: Ic1193d5557e0a3468c16896767888e8a593671e0
2015-03-07 04:05:44 +00:00
James D. Forrester bed038b509 build: Bump devDependencies to latest
Updates:
* grunt-contrib-csslint  0.3.1  ->  0.4.0
* grunt-contrib-jslint   0.10.0 -> 0.11.0
* grunt-jscs             0.8.1  ->  1.2.0

For jscs, leaving requireSpacesInsideArrayBrackets to avoid headaches for now.

Change-Id: I62d34444edbba65c8bd22d2fa5e50e16cabb0042
2015-02-02 14:30:39 -08:00
James D. Forrester 12f183a20c build: Update grunt-jscs devDependency to latest
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
2014-11-17 19:50:46 -08:00
Timo Tijhof 8ddf622891 build: Remove 'repository' and 'licenses' key from package.json
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
2014-10-11 02:59:33 +02:00
James D. Forrester 198c240fcc build: Bump miscellaneous devDependencies to latest
Updates:
* grunt                  0.4.2 -> 0.4.5
* grunt-banana-checker   0.1.0 -> 0.2.0
* grunt-contrib-csslint  0.2.0 -> 0.3.1
* grunt-jscs             0.6.1 -> 0.7.1

Change-Id: If1d612cd4ad9b45b0d249931339882f4bc238c74
2014-09-13 23:40:06 -07:00
James D. Forrester 8cc3451be7 build: Update grunt-jscs (formerly grunt-jscs-checker) from 0.6.0 to 0.6.1
Change-Id: I097d63cea436ab6ef2a16fccead10b72103d0b6e
2014-07-18 13:21:27 -07:00
Timo Tijhof 19afd65a08 build: Update jscs and use new "wikimedia" preset
Our coding style has been upstreamed and first released
in node-jscs v1.5.0 (grunt-jscs-checker v0.6.0).

Change-Id: Ifc0cfc7177946b9d11407f60e38b0177883724c5
2014-06-26 17:00:15 +00:00
Timo Tijhof 0c60733ec5 Grunt: Clean up
* 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
2014-06-04 05:07:12 +02:00
Timo Tijhof 25d00cc777 build: Update jscs and jshint
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
2014-05-15 16:52:34 +00:00
James D. Forrester 0ee4ba5d11 Use new banana checker as a linter to avoid lacking qqq messages
Change-Id: I02647d519ff85f78178d4fb48f014081ca3e82ef
2014-04-04 15:22:57 -07:00
James D. Forrester bf9f17d9b9 Bump jscs to 0.4.1
Change-Id: I12f65f48ea86b2496de295be1b61d69d3c727d2a
2014-04-01 14:39:03 -07:00
Roan Kattouw ee743f869d Use submodule for VisualEditor core
* 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
2013-12-20 09:18:41 +00:00
Timo Tijhof 17cbdd3cb4 grunt: Update devDependencies
Change-Id: I0076d07e2029039283984dd2ae0b0e775b3e00c0
2013-12-18 08:19:19 +01:00
Timo Tijhof 561dd7c65b grunt: Update grunt-contrib-jshint use built-in jshintrc parser
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
2013-12-18 06:33:20 +00:00
Timo Tijhof cf7f2b141d Set up node-jscs, pass it, and configure in local Gruntfile
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
2013-12-06 10:37:27 -08:00
C. Scott Ananian 5f392ccec1 Updates to README.md and CODING.md
Describe how to report bugs, install grunt, and run tests.

Update jsduck instructions.

Fix path to license file in package.json.

Change-Id: I276ff0ea4324f027dafc044a86fa564b2439089a
2013-09-17 19:09:25 -04:00
Timo Tijhof bedbebd53c Implement Grunt support (grunt jshint,csslint,qunit,watch)
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
2013-06-05 11:10:23 +00:00