twreporter-react
Version:
React-Redux site for The Reporter Foundation in Taiwan
150 lines (99 loc) • 5.72 kB
JavaScript
'use strict';
var _semver = require('semver');
var _semver2 = _interopRequireDefault(_semver);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _loaderUtils = require('loader-utils');
var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
var _resolveModule = require('./utils/resolveModule');
var _resolveModule2 = _interopRequireDefault(_resolveModule);
var _checkBootstrapVersion = require('./utils/checkBootstrapVersion');
var _checkBootstrapVersion2 = _interopRequireDefault(_checkBootstrapVersion);
var _processStyleLoaders = require('./utils/processStyleLoaders');
var _processStyleLoaders2 = _interopRequireDefault(_processStyleLoaders);
var _joinLoaders = require('./utils/joinLoaders');
var _joinLoaders2 = _interopRequireDefault(_joinLoaders);
var _buildExtractStylesLoader = require('./utils/buildExtractStylesLoader');
var _buildExtractStylesLoader2 = _interopRequireDefault(_buildExtractStylesLoader);
var _createRequire = require('./utils/createRequire');
var _createRequire2 = _interopRequireDefault(_createRequire);
var _logger = require('./utils/logger');
var _logger2 = _interopRequireDefault(_logger);
var _bootstrap = require('./bootstrap.config');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// For Node <= v0.12.x Babel polyfill is required
if (_semver2.default.lt(process.version, '4.0.0') && !global._babelPolyfill) {
try {
require('babel-polyfill');
} catch (e) {
try {
require('babel-core/polyfill');
} catch (ee) {
try {
require('babel/polyfill');
} catch (eee) {
throw new Error('\n For Node <= v0.12.x Babel polyfill is required.\n Make sure it\'s installed in your \'node_modules/\' directory.\n ' + eee + '\n ');
}
}
}
} /* eslint func-names: 0 */
module.exports = function () {};
/**
* Bootstrap loader entry point
*
* @param {string} source - Path to dummy file with empty object.
* Needed b/c we have to apply loader to some file.
* @returns {string}
*/
module.exports.pitch = function (source) {
if (this.cacheable) this.cacheable();
global.__DEBUG__ = _bootstrap.loglevel === 'debug' || process.env.DEBUG === '*';
_logger2.default.debug('Hey, we\'re in DEBUG mode! Yabba dabba doo!');
_logger2.default.debug('Context:', this.context);
_logger2.default.debug('Using Bootstrap version:', _bootstrap.bootstrapVersion);
// Resolve `bootstrap` package
var bootstrapNPMModule = _bootstrap.bootstrapVersion === 3 ? 'bootstrap-sass' : 'bootstrap';
_logger2.default.debug('Using Bootstrap module:', bootstrapNPMModule);
var bootstrapPath = (0, _resolveModule2.default)(bootstrapNPMModule);
if (!bootstrapPath) {
throw new Error('\n Could not find path to \'' + bootstrapNPMModule + '\' module.\n Make sure it\'s installed in your \'node_modules/\' directory.\n ');
}
var bootstrapRelPath = _path2.default.relative(this.context, bootstrapPath);
_logger2.default.debug('Bootstrap module location (abs):', bootstrapPath);
_logger2.default.debug('Bootstrap module location (rel):', bootstrapRelPath);
var bootstrapNPMVersion = (0, _checkBootstrapVersion2.default)(_bootstrap.bootstrapVersion, bootstrapPath);
if (!bootstrapNPMVersion.allGood) {
throw new Error('\n Looks like you have wrong version of Bootstrap.\n Loader wants: ' + _bootstrap.bootstrapVersion + '.x.x\n Installed version: ' + bootstrapNPMVersion.version + '\n ');
}
_logger2.default.debug('Bootstrap NPM package version:', bootstrapNPMVersion.version);
var _loaderUtils$parseQue = _loaderUtils2.default.parseQuery(this.query);
var extractStyles = _loaderUtils$parseQue.extractStyles;
_logger2.default.debug('Query from webpack config:', this.query || '*none*');
var config = (0, _bootstrap.createConfig)({ bootstrapPath: bootstrapPath, bootstrapRelPath: bootstrapRelPath, extractStyles: extractStyles });
_logger2.default.debug('Normalized params:', '\n', config);
global.__BOOTSTRAP_CONFIG__ = config;
var result = [];
var dummySourceRel = _loaderUtils2.default.urlToRequest(_path2.default.relative(this.context, source));
// Handle styles
if (config.styles) {
if (!config.styleLoaders) {
throw new Error('\n Could not find \'styleLoaders\' in your config.\n You can use default ones:\n styleLoaders: [\'style\', \'css\', \'sass\']\n ');
}
var styleLoadersWithSourceMapsAndResolveUrlLoader = (0, _processStyleLoaders2.default)(config.styleLoaders);
var styleLoaders = config.extractStyles ? (0, _buildExtractStylesLoader2.default)(styleLoadersWithSourceMapsAndResolveUrlLoader) : (0, _joinLoaders2.default)(styleLoadersWithSourceMapsAndResolveUrlLoader);
var bootstrapStylesLoader = _loaderUtils2.default.urlToRequest(_path2.default.relative(this.context, require.resolve(_loaderUtils2.default.urlToRequest('bootstrap.styles.loader.js')))) + '!';
var styles = styleLoaders + bootstrapStylesLoader + dummySourceRel;
result.push((0, _createRequire2.default)(styles));
}
// Handle scripts
if (config.scripts) {
var bootstrapScriptsLoader = _loaderUtils2.default.urlToRequest(_path2.default.relative(this.context, require.resolve(_loaderUtils2.default.urlToRequest('bootstrap.scripts.loader.js')))) + '!';
var scripts = bootstrapScriptsLoader + dummySourceRel;
result.push((0, _createRequire2.default)(scripts));
}
var resultOutput = result.map(function (loader) {
return loader + '\n';
}).join('');
_logger2.default.debug('Requiring:', '\n', resultOutput);
return resultOutput;
};