We will host any version of any library. Feel free to add a pull request for an older version of a library if your site still uses it.
Libraries must have notable popularity. 100 stars on GitHub is a good example, but as long as reasonably popularity can be demonstrated the library will be added.
Extensions, Plugins, Resources
Extensions, Plugins, ResourcesConventions
- Filenames should not include version number and be lowercase
- Javascript & Css files should be minified, If the library doesn't already provide a minified version, our preferred minifier is UglifyJS
- If updating an existing library, try to keep consistent with the existing structure
Pull requests steps
- Fork this repository
- Install all the needed dependencies locally (you will need
node
):npm install
- Install all the needed dependencies locally (you will need
- Add your library (following the conventions of this repository)
- 1 commit per pull request
- 1 library per pull request
- The files in the pull request must correspond to a tag in the original repository (some exceptions apply)
- include a package.json in the npm format (see
test/schemata/npm-package.json
for details - it's very simple) - Run
npm test
to check everything is ok
- Send us a pull request.
- If you are the author of the library, add
[author]
to the pull request title - Make sure you include in the pull description:
- Where you downloaded the script
- If it isn't clear, how you found the version of the script
- e.g. https://github.com/cdnjs/cdnjs/pull/541
- If you are the author of the library, add
- If the library doesn't already provide a minified version, our preferred minifier is UglifyJS
Enabling NPM auto update
We automatically update libraries that are also hosted on NPM e.g. Lodash.This script runs automatically every 4 hours
- Update the package.json and configure it as below and submit a pull request.
// Lodash package.json
// ...
"npmName": "lodash",
"npmFileMap": [{
"basePath": "/dist/",
"files": [
"*"
]
}],
// ...
npmName
should map to the name of the library on NPM
npmFileMap
is a white list of files to take from the NPM tarball and host on the cdn
basePath
will be ignored when copying over to the cdn
files
is a pattern matcher that you can select many files withThe above example looks in the tarball whose structure might look like
- dist/lodash.js
- dist/lodash.min.js
- README
It then will look for dist/*
which will find the two files inside the dist folder. It will now copy it over to cdnjs but without the dist
path. Such that they will end up. ajax/libs/lodash.js/2.0/lodash.js
Running the validator
- Install all the needed dependencies locally (you will need
node
):npm install
- Run the test suite:
npm test
from https://github.com/cdnjs/cdnjs