nwb
Version:
A toolkit for React, Preact & Inferno apps, React libraries and other npm modules for the web, with no configuration (until you need it)
56 lines (43 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = buildModule;
var _runSeries = _interopRequireDefault(require("run-series"));
var _moduleBuild = _interopRequireDefault(require("../moduleBuild"));
var _utils = require("../utils");
var _buildDemo = _interopRequireDefault(require("./build-demo"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Create a React component's CommonJS and ES modules and UMD builds, and build
* its demo app if it has one.
*/
function buildModule(args, cb) {
let config = {
babel: {
presets: ['react'],
runtime: {
helpers: false
}
}
}; // Disable removal of propTypes in production builds with --[keep-]proptypes
if (args.proptypes !== true && args['keep-proptypes'] !== true) {
// Wrap propTypes with an environment check in development builds
config.babelDev = {
removePropTypes: {
mode: 'wrap'
}
}; // Strip propTypes and prop-type imports from UMD production build
config.babelProd = {
removePropTypes: {
removeImport: true
}
};
}
let tasks = [cb => (0, _moduleBuild.default)(args, config, cb)]; // Disable demo build with --no-demo or --no-demo-build
if (args.demo !== false && args['demo-build'] !== false && (0, _utils.directoryExists)('demo')) {
tasks.push(cb => (0, _buildDemo.default)(args, cb));
}
(0, _runSeries.default)(tasks, cb);
}
module.exports = exports.default;