parent
709539ad51
commit
d825e41203
3 changed files with 16 additions and 14 deletions
|
@ -1,6 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
||||||
<Default Extension=".vsixmanifest" ContentType="text/xml"/>
|
|
||||||
<Default Extension=".json" ContentType="application/json"/>
|
|
||||||
<% _.forEach(contentTypes, function (e) { %><Default Extension="${ e.extension }" ContentType="${ e.contentType }"/><% }); %>
|
<% _.forEach(contentTypes, function (e) { %><Default Extension="${ e.extension }" ContentType="${ e.contentType }"/><% }); %>
|
||||||
</Types>
|
</Types>
|
|
@ -274,13 +274,21 @@ export function toVsixManifest(assets: IAsset[], vsix: any, options: IPackageOpt
|
||||||
.then(vsixManifestTemplate => vsixManifestTemplate(vsix));
|
.then(vsixManifestTemplate => vsixManifestTemplate(vsix));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toContentTypes(files: IFile[]): Promise<string> {
|
const defaultExtensions = {
|
||||||
const extensions = Object.keys(_.indexBy(files, f => path.extname(f.path)))
|
'.json': 'application/json',
|
||||||
.map(e => e.toLowerCase())
|
'.vsixmanifest': 'text/xml'
|
||||||
.filter(e => e && !_.contains(['.json', '.vsixmanifest'], e));
|
};
|
||||||
|
|
||||||
const contentTypes = extensions
|
export function toContentTypes(files: IFile[]): Promise<string> {
|
||||||
.map(extension => ({ extension, contentType: mime.lookup(extension) }));
|
const extensions = Object.keys(_.indexBy(files, f => path.extname(f.path).toLowerCase()))
|
||||||
|
.filter(e => !!e)
|
||||||
|
.reduce((r, e) => _.assign(r, { [e]: mime.lookup(e) }), {});
|
||||||
|
|
||||||
|
const allExtensions = _.assign({}, extensions, defaultExtensions);
|
||||||
|
const contentTypes = Object.keys(allExtensions).map(extension => ({
|
||||||
|
extension,
|
||||||
|
contentType: allExtensions[extension]
|
||||||
|
}));
|
||||||
|
|
||||||
return readFile(contentTypesTemplatePath, 'utf8')
|
return readFile(contentTypesTemplatePath, 'utf8')
|
||||||
.then(contentTypesTemplateStr => _.template(contentTypesTemplateStr))
|
.then(contentTypesTemplateStr => _.template(contentTypesTemplateStr))
|
||||||
|
|
|
@ -354,12 +354,8 @@ describe('toContentTypes', () => {
|
||||||
assert.ok(result.Types);
|
assert.ok(result.Types);
|
||||||
assert.ok(result.Types.Default);
|
assert.ok(result.Types.Default);
|
||||||
assert.equal(result.Types.Default.length, 2);
|
assert.equal(result.Types.Default.length, 2);
|
||||||
assert.ok(result.Types.Default[0].$);
|
assert.ok(result.Types.Default.some(d => d.$.Extension === '.vsixmanifest' && d.$.ContentType === 'text/xml'));
|
||||||
assert.equal(result.Types.Default[0].$.Extension, '.vsixmanifest');
|
assert.ok(result.Types.Default.some(d => d.$.Extension === '.json' && d.$.ContentType === 'application/json'));
|
||||||
assert.equal(result.Types.Default[0].$.ContentType, 'text/xml');
|
|
||||||
assert.ok(result.Types.Default[1].$);
|
|
||||||
assert.equal(result.Types.Default[1].$.Extension, '.json');
|
|
||||||
assert.equal(result.Types.Default[1].$.ContentType, 'application/json');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue