diff --git a/gulpfile.ts b/gulpfile.ts
index 2bc948296..64ada61e4 100644
--- a/gulpfile.ts
+++ b/gulpfile.ts
@@ -3,7 +3,7 @@
*/
import * as fs from 'fs';
-import * as path from 'path';
+import * as Path from 'path';
import * as gulp from 'gulp';
import * as gutil from 'gulp-util';
import * as babel from 'gulp-babel';
@@ -71,9 +71,20 @@ function getLicenseHtml(path: string): string {
.replace(/(^|\n)(.*?)($|\n)/g, '
$2
');
}
+function getLicenseSectionHtml(path: string): string {
+ try {
+ const pkg = JSON.parse(fs.readFileSync(Path.parse(path).dir + '/package.json', 'utf-8'));
+ const licenseHtml = getLicenseHtml(path);
+ return `${pkg.name} v${pkg.version}
${licenseHtml} `;
+ } catch (e) {
+ return null;
+ }
+}
+
gulp.task('build:about:docs', () => {
const licenses = glob.sync('./node_modules/**/LICENSE*');
- const licenseHtml = [getLicenseHtml('./LICENSE')].concat(licenses.map(license => getLicenseHtml(license))).join('
');
+ const licenseHtml = getLicenseHtml('./LICENSE');
+ const thirdpartyLicensesHtml = licenses.map(license => getLicenseSectionHtml(license)).join('');
const pugs = glob.sync('./src/web/about/pages/**/*.pug');
const streams = pugs.map(file => {
const page = file.replace('./src/web/about/pages/', '').replace('.pug', '');
@@ -81,10 +92,11 @@ gulp.task('build:about:docs', () => {
.pipe(pug({
locals: Object.assign({
path: page,
- license: licenseHtml
+ license: licenseHtml,
+ thirdpartyLicenses: thirdpartyLicensesHtml
}, config)
}))
- .pipe(gulp.dest('./built/web/about/pages/' + path.parse(page).dir));
+ .pipe(gulp.dest('./built/web/about/pages/' + Path.parse(page).dir));
});
return es.merge.apply(es, streams);
diff --git a/src/web/about/pages/license.pug b/src/web/about/pages/license.pug
index eb008a3ca..2d91a00f5 100644
--- a/src/web/about/pages/license.pug
+++ b/src/web/about/pages/license.pug
@@ -7,3 +7,9 @@ block content
h1 ライセンス
div!= license
+
+ hr
+
+ details
+ summary サードパーティ
+ div!= thirdpartyLicenses