UNPKG

metalpress

Version:

Create a blog easily with Metalsmith.

333 lines (229 loc) 10.9 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function () { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var callback = arguments[1]; var options = (0, _defaults2.default)(config); // Config // -------------------------------------------------------------------------- var m = new _metalsmith2.default(_path2.default.resolve(process.cwd(), options.basePath)); // Metalsmith options // -------------------------------------------------------------------------- m.clean(true); m.destination(config.destination || 'dist'); // Object Metadata // -------------------------------------------------------------------------- m.metadata(options.metadata); // File Metadata // -------------------------------------------------------------------------- m.use((0, _metalsmithMetadata2.default)(options.filedata)); // Build Date // -------------------------------------------------------------------------- m.use((0, _metalsmithBuildDate2.default)({ key: 'dateBuilt' })); // Firebase // -------------------------------------------------------------------------- if (options.firebase) { m.use((0, _metalsmithFirebase2.default)(options.firebase)); m.use((0, _metalsmithFirebase.transform)(options.firebase.options)); } // Contentful // -------------------------------------------------------------------------- if (options.contentful) { m.use((0, _contentfulMetalsmith2.default)(options.contentful)); m.use(function (files, m, next) { for (var file in files) { try { var data = files[file].data.fields.content; files[file].contents = Buffer.from(data, 'utf8'); } catch (e) {/* skip file */} } next(); }); } // Ignores // -------------------------------------------------------------------------- m.use((0, _metalsmithIgnore2.default)(options.ignore)); // Drafts // -------------------------------------------------------------------------- if (m.metadata().production) { m.use((0, _metalsmithDrafts2.default)()); } // Definitions // -------------------------------------------------------------------------- m.use((0, _metalsmithDefine2.default)({ moment: _moment2.default })); // Date // -------------------------------------------------------------------------- m.use((0, _metalsmithJekyllDates2.default)()); // Tags // -------------------------------------------------------------------------- if (options.tags) { m.use((0, _metalsmithTags2.default)(options.tags)); } // Code Highlighting // -------------------------------------------------------------------------- m.use((0, _metalsmithMetallic2.default)()); // Markdown // -------------------------------------------------------------------------- m.use((0, _metalsmithMarkdown2.default)(options.markdown)); // Excerpts // -------------------------------------------------------------------------- m.use((0, _metalsmithBetterExcerpts2.default)(options.excerpts)); // Attach Collections // -------------------------------------------------------------------------- m.use((0, _metalsmithCollections2.default)(options.collections)); // Pagination // -------------------------------------------------------------------------- if (options.pagination) { (0, _helpers._fixPaginationQuirk)(config); m.use((0, _metalsmithPagination2.default)(options.pagination)); m.use((0, _helpers._fixPaginationObject)(config)); } // Permalinks // -------------------------------------------------------------------------- m.use((0, _metalsmithPermalinks2.default)(options.permalinks)); // Styles // -------------------------------------------------------------------------- if (m.metadata().production) { options.sass.outputStyle = 'compressed'; options.sass.sourceMap = false; options.sass.sourceMapEmbed = false; m.use((0, _metalsmithSass2.default)(options.sass)); } else { m.use((0, _metalsmithSass2.default)(options.sass)); } m.use((0, _metalsmithAutoprefixer2.default)({ browsers: ['last 2 versions'] })); // Fingerprinting // -------------------------------------------------------------------------- if (options.fingerprint) { m.use((0, _metalsmithFingerprint2.default)(options.fingerprint)); } // Post-template Middleware // -------------------------------------------------------------------------- if (options.preMiddleware) { for (var plugin in options.preMiddleware) { if (options.preMiddleware[plugin]) { m.use(options.preMiddleware[plugin]); } } } // Templates // -------------------------------------------------------------------------- m.use((0, _metalsmithLayouts2.default)(options.layouts)); m.use((0, _metalsmithInPlace2.default)(options.inPlace)); // Webpack // // -------------------------------------------------------------------------- if (options.webpack) { if (m.metadata().production) { m.use((0, _metalsmithWebpack2.default)(options.webpack.prod, true)); } else { m.use((0, _metalsmithWebpack2.default)(options.webpack.dev, true)); } } // Sitemap // -------------------------------------------------------------------------- if (m.metadata().production && options.sitemap) { m.use((0, _metalsmithSitemap2.default)(options.sitemap)); } // Robots // -------------------------------------------------------------------------- if (options.robots) { m.use((0, _metalsmithRobots2.default)(options.robots)); } // RSS Feed // -------------------------------------------------------------------------- if (options.rss) { if (m.metadata().production) { m.use((0, _metalsmithRss2.default)(options.rss)); } } // Production // -------------------------------------------------------------------------- if (m.metadata().production) { m.use((0, _metalsmithImagemin2.default)(options.imagemin)); m.use((0, _metalsmithHtmlMinifier2.default)('*.html', options.htmlMinifier)); } // Post-template Middleware // -------------------------------------------------------------------------- if (options.postMiddleware) { for (var _plugin in options.postMiddleware) { if (options.postMiddleware[_plugin]) { m.use(options.postMiddleware[_plugin]); } } } m.build(callback); return m; }; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _metalsmith = require('metalsmith'); var _metalsmith2 = _interopRequireDefault(_metalsmith); var _deepAssign = require('deep-assign'); var _deepAssign2 = _interopRequireDefault(_deepAssign); var _metalsmithCollections = require('metalsmith-collections'); var _metalsmithCollections2 = _interopRequireDefault(_metalsmithCollections); var _metalsmithMetadata = require('metalsmith-metadata'); var _metalsmithMetadata2 = _interopRequireDefault(_metalsmithMetadata); var _metalsmithMarkdown = require('metalsmith-markdown'); var _metalsmithMarkdown2 = _interopRequireDefault(_metalsmithMarkdown); var _metalsmithLayouts = require('metalsmith-layouts'); var _metalsmithLayouts2 = _interopRequireDefault(_metalsmithLayouts); var _metalsmithInPlace = require('metalsmith-in-place'); var _metalsmithInPlace2 = _interopRequireDefault(_metalsmithInPlace); var _metalsmithPermalinks = require('metalsmith-permalinks'); var _metalsmithPermalinks2 = _interopRequireDefault(_metalsmithPermalinks); var _metalsmithPagination = require('metalsmith-pagination'); var _metalsmithPagination2 = _interopRequireDefault(_metalsmithPagination); var _metalsmithBetterExcerpts = require('metalsmith-better-excerpts'); var _metalsmithBetterExcerpts2 = _interopRequireDefault(_metalsmithBetterExcerpts); var _metalsmithSass = require('metalsmith-sass'); var _metalsmithSass2 = _interopRequireDefault(_metalsmithSass); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _metalsmithDefine = require('metalsmith-define'); var _metalsmithDefine2 = _interopRequireDefault(_metalsmithDefine); var _metalsmithJekyllDates = require('metalsmith-jekyll-dates'); var _metalsmithJekyllDates2 = _interopRequireDefault(_metalsmithJekyllDates); var _metalsmithAutoprefixer = require('metalsmith-autoprefixer'); var _metalsmithAutoprefixer2 = _interopRequireDefault(_metalsmithAutoprefixer); var _metalsmithWebpack = require('metalsmith-webpack'); var _metalsmithWebpack2 = _interopRequireDefault(_metalsmithWebpack); var _metalsmithIgnore = require('metalsmith-ignore'); var _metalsmithIgnore2 = _interopRequireDefault(_metalsmithIgnore); var _metalsmithMetallic = require('metalsmith-metallic'); var _metalsmithMetallic2 = _interopRequireDefault(_metalsmithMetallic); var _metalsmithTags = require('metalsmith-tags'); var _metalsmithTags2 = _interopRequireDefault(_metalsmithTags); var _metalsmithSnippet = require('metalsmith-snippet'); var _metalsmithSnippet2 = _interopRequireDefault(_metalsmithSnippet); var _metalsmithBrokenLinkChecker = require('metalsmith-broken-link-checker'); var _metalsmithBrokenLinkChecker2 = _interopRequireDefault(_metalsmithBrokenLinkChecker); var _metalsmithBuildDate = require('metalsmith-build-date'); var _metalsmithBuildDate2 = _interopRequireDefault(_metalsmithBuildDate); var _metalsmithRobots = require('metalsmith-robots'); var _metalsmithRobots2 = _interopRequireDefault(_metalsmithRobots); var _contentfulMetalsmith = require('contentful-metalsmith'); var _contentfulMetalsmith2 = _interopRequireDefault(_contentfulMetalsmith); var _metalsmithHtmlMinifier = require('metalsmith-html-minifier'); var _metalsmithHtmlMinifier2 = _interopRequireDefault(_metalsmithHtmlMinifier); var _metalsmithFingerprint = require('metalsmith-fingerprint'); var _metalsmithFingerprint2 = _interopRequireDefault(_metalsmithFingerprint); var _metalsmithImagemin = require('metalsmith-imagemin'); var _metalsmithImagemin2 = _interopRequireDefault(_metalsmithImagemin); var _metalsmithSitemap = require('metalsmith-sitemap'); var _metalsmithSitemap2 = _interopRequireDefault(_metalsmithSitemap); var _metalsmithFirebase = require('metalsmith-firebase'); var _metalsmithFirebase2 = _interopRequireDefault(_metalsmithFirebase); var _metalsmithRss = require('metalsmith-rss'); var _metalsmithRss2 = _interopRequireDefault(_metalsmithRss); var _metalsmithDrafts = require('metalsmith-drafts'); var _metalsmithDrafts2 = _interopRequireDefault(_metalsmithDrafts); var _defaults = require('./config/defaults'); var _defaults2 = _interopRequireDefault(_defaults); var _helpers = require('./helpers'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }