mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 19:21:34 +08:00
add version info to docs
This commit is contained in:
11
gulpfile.js
11
gulpfile.js
@ -313,8 +313,17 @@ gulp.task('karma-watch', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('docs', function() {
|
gulp.task('docs', function() {
|
||||||
|
var Dgeni = require('dgeni');
|
||||||
|
var semver = require('semver');
|
||||||
|
|
||||||
|
var docVersion = flags['doc-version'] || 'nightly';
|
||||||
|
if (docVersion != 'nightly' && !semver.valid(docVersion)) {
|
||||||
|
console.log('Usage: gulp docs --doc-version=(nightly|versionName)\nversionName must be a valid semver version.');
|
||||||
|
return process.exit(1);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
var dgeni = new Dgeni([require('./scripts/docs/dgeni-config')]);
|
var ionicPackage = require('./scripts/docs/dgeni-config')(docVersion);
|
||||||
|
var dgeni = new Dgeni([ionicPackage]);
|
||||||
return dgeni.generate();
|
return dgeni.generate();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err.stack);
|
console.log(err.stack);
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"request": "2.53.0",
|
"request": "2.53.0",
|
||||||
"run-sequence": "^1.1.0",
|
"run-sequence": "^1.1.0",
|
||||||
|
"semver": "^5.0.1",
|
||||||
"serve-static": "^1.9.2",
|
"serve-static": "^1.9.2",
|
||||||
"source-map-support": "^0.2.10",
|
"source-map-support": "^0.2.10",
|
||||||
"through2": "^0.6.3",
|
"through2": "^0.6.3",
|
||||||
|
@ -5,10 +5,14 @@ var typescriptPackage = require('./typescript-package');
|
|||||||
var linksPackage = require('./links-package');
|
var linksPackage = require('./links-package');
|
||||||
var gitPackage = require('dgeni-packages/git');
|
var gitPackage = require('dgeni-packages/git');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
var semver = require('semver');
|
||||||
|
var fs = require('fs');
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
// Define the dgeni package for generating the docs
|
// Define the dgeni package for generating the docs
|
||||||
module.exports = new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage, gitPackage])
|
module.exports = function(currentVersion){
|
||||||
|
|
||||||
|
return new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage, gitPackage])
|
||||||
.processor(require('./processors/index-page'))
|
.processor(require('./processors/index-page'))
|
||||||
.processor(require('./processors/jekyll'))
|
.processor(require('./processors/jekyll'))
|
||||||
|
|
||||||
@ -26,8 +30,56 @@ module.exports = new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, ty
|
|||||||
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
||||||
})
|
})
|
||||||
|
|
||||||
.config(function(renderDocsProcessor, versionInfo) {
|
.config(function(renderDocsProcessor, computePathsProcessor, versionInfo) {
|
||||||
renderDocsProcessor.extraData.versionInfo = versionInfo;
|
try {
|
||||||
|
versions = fs.readdirSync(path.resolve(__dirname, '../../dist/ionic-site/docs'))
|
||||||
|
.filter(semver.valid)
|
||||||
|
.sort(semver.rcompare);
|
||||||
|
} catch(e) {
|
||||||
|
versions = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
var versionData = {
|
||||||
|
list: versions,
|
||||||
|
current: _.find(versions, { name: currentVersion }),
|
||||||
|
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
|
||||||
|
};
|
||||||
|
|
||||||
|
!_.contains(versions, currentVersion) && versions.unshift(currentVersion);
|
||||||
|
!_.contains(versions, 'nightly') && versions.unshift('nightly');
|
||||||
|
|
||||||
|
//First semver valid version is latest
|
||||||
|
var latestVersion = _.find(versions, semver.valid);
|
||||||
|
versions = versions.map(function(version) {
|
||||||
|
//Latest version is in docs root
|
||||||
|
var folder = version == latestVersion ? '' : version;
|
||||||
|
return {
|
||||||
|
href: path.join('/docs', folder),
|
||||||
|
folder: folder,
|
||||||
|
name: version
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
var versionData = {
|
||||||
|
list: versions,
|
||||||
|
current: _.find(versions, { name: currentVersion }),
|
||||||
|
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
|
||||||
|
};
|
||||||
|
|
||||||
|
renderDocsProcessor.extraData.version = versionData;
|
||||||
|
|
||||||
|
computePathsProcessor.pathTemplates = [{
|
||||||
|
docTypes: ['class', 'var', 'function', 'let'],
|
||||||
|
getOutputPath: function(doc) {
|
||||||
|
// TODO(tlancina): Use nightly if version isn't specified by gulp task
|
||||||
|
// TODO(tlancina): inject api base path
|
||||||
|
return 'docs/' + (versionData.current.folder || '') + '/api/' + doc.fileInfo.relativePath
|
||||||
|
// strip ionic from path root
|
||||||
|
.replace(/^ionic\//, '')
|
||||||
|
// replace extension with .html
|
||||||
|
.replace(/\.\w*$/, '.html');
|
||||||
|
}
|
||||||
|
}];
|
||||||
})
|
})
|
||||||
|
|
||||||
//configure file reading
|
//configure file reading
|
||||||
@ -95,35 +147,4 @@ module.exports = new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, ty
|
|||||||
// 'common.template.html'
|
// 'common.template.html'
|
||||||
// ];
|
// ];
|
||||||
})
|
})
|
||||||
|
}
|
||||||
// Configure ids and paths
|
|
||||||
.config(function(computeIdsProcessor, computePathsProcessor, versionInfo) {
|
|
||||||
// computeIdsProcessor.idTemplates.push({
|
|
||||||
// docTypes: ['guide'],
|
|
||||||
// getId: function(doc) {
|
|
||||||
// return doc.fileInfo.relativePath
|
|
||||||
// // path should be relative to `modules` folder
|
|
||||||
// .replace(/.*\/?modules\//, '')
|
|
||||||
// // path should not include `/docs/`
|
|
||||||
// .replace(/\/docs\//, '/')
|
|
||||||
// // path should not have a suffix
|
|
||||||
// .replace(/\.\w*$/, '');
|
|
||||||
// },
|
|
||||||
// getAliases: function(doc) { return [doc.id]; }
|
|
||||||
// });
|
|
||||||
|
|
||||||
// docTypes: 'module', 'member', 'class', 'var', 'function', 'let'
|
|
||||||
|
|
||||||
computePathsProcessor.pathTemplates = [{
|
|
||||||
docTypes: ['class', 'var', 'function', 'let'],
|
|
||||||
getOutputPath: function(doc) {
|
|
||||||
// TODO(tlancina): Use nightly if version isn't specified by gulp task
|
|
||||||
// TODO(tlancina): inject api base path
|
|
||||||
return 'docs/' + versionInfo.currentVersion.raw + '/api/' + doc.fileInfo.relativePath
|
|
||||||
// strip ionic from path root
|
|
||||||
.replace(/^ionic\//, '')
|
|
||||||
// replace extension with .html
|
|
||||||
.replace(/\.\w*$/, '.html');
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
});
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: "docs_api"
|
layout: "docs_api"
|
||||||
|
version: "<$ version.current.name $>"
|
||||||
|
versionHref: "<$ version.current.href $>"
|
||||||
path: ""
|
path: ""
|
||||||
|
|
||||||
title: Javascript
|
title: Javascript
|
||||||
|
Reference in New Issue
Block a user