Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 84 commits behind yui:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


YUI Bootstrapper for Node.js

The YUI3NodeJS project uses several 3rd party open source libraries and tools.

This file summarizes the tools used, their purpose, and the licenses under which they’re released.

This node.js module attempts to setup and bootstrap a working YUI 3 instance.

This module includes support for remote script loading via Y.Get.script() and remote data fetching via Y.io.

See “JSDom Support” below for DOM manipulation.


All of the examples and tests assume you have node in your path and they are all executable.


All dependencies are installed when you install the yui3 package via npm

For server side dom manipulation, you need the following packages installed:


npm install jsdom


npm install htmlparser

Optional Dependancies

Express : LICENSE (MIT)

npm install express

Connect : LICENSE (MIT)

npm install connect

Installing – via NPM

npm install yui3

Installing – as a developer

You must have git and npm installed before you can develop.

git clone git://github.com/davglass/nodejs-yui3.git
cd nodejs-yui3/
npm install .

Using YUI3

This is the general-dom example

Remote Fetching

This example shows fetching a remote document and then using Node to modify it

Using the Y.Browser object

To comply with the “no-globals” CommonJS spec, there is no global document or window in this mode.
Just including the nodejs-dom module will create a fake dom for this instance.
You can create a document like this:
View this Gist

You can make older DOM code run by setting up a couple of local variables, like this

If you are using YUI to serve pages, you should use a Nested Use to create the document when the request comes in.

Something like this

I have an example showing this: examples/y-browser.js


    cd examples/


When using JSDom, All relevent YUI 3 Dom & Selector tests pass. The ones that are skipped revolve around styles and postioning. Since there is no window or CSS cascade, these seem unimportant at the moment.

Testing is pretty simple now once you install `expresso`:

    npm install expresso
    expresso ./tests/*.js


This software is offered under the terms of the BSD license. See the LICENSE file or the YUI License for license text and copyright information.


Your contributions are welcome! Please review the YUI contributor guide before contributing. If you haven’t contributed to a YUI project before, you’ll need to review and sign the YUI CLA before we can accept your pull request.