dev-toolkit
Version:
Universal Development Toolkit for React Veterans
98 lines (82 loc) • 3.11 kB
JavaScript
;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = require("fs-extra");
var _klawSync = _interopRequireDefault(require("klaw-sync"));
var _decomment = _interopRequireDefault(require("decomment"));
var _projectSettings = require("../webpack/projectSettings");
var _utilities = require("../utilities");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _utilities.log)({
title: 'prepare',
message: 'Copy templates into dev-toolkit distribution',
useSeparator: true
});
var ignoreDevFolders = function ignoreDevFolders(item) {
return item.indexOf('node_modules') < 0 && item.indexOf('build') < 0;
};
var removeDevFiles = function removeDevFiles(_ref) {
var directory = _ref.directory;
var devFiles = function devFiles(item) {
return item && item.path && (item.path.indexOf('package-lock') >= 0 || item.path.indexOf('.snyk') >= 0);
};
var allFiles = (0, _klawSync.default)(directory, {
nodir: true,
filter: devFiles
});
var allFilePaths = Object.keys(allFiles).map(function (item) {
return allFiles[item].path;
});
allFilePaths.forEach(function (filePath) {
(0, _fsExtra.removeSync)(filePath);
});
};
var removeCommentsFromJSFiles = function removeCommentsFromJSFiles(_ref2) {
var directory = _ref2.directory;
var onlyJSFiles = function onlyJSFiles(item) {
return item && item.path && _path.default.extname(item.path) === '.js';
};
var allFiles = (0, _klawSync.default)(directory, {
nodir: true,
filter: onlyJSFiles
});
var allFilePaths = Object.keys(allFiles).map(function (item) {
return allFiles[item].path;
});
allFilePaths.forEach(function (filePath) {
(0, _fsExtra.readFile)(filePath, 'utf8').then(function (data) {
// Uncomment files as if they were plain text files (avoiding issues with jsx)
(0, _fsExtra.outputFile)(filePath, _decomment.default.text(data));
}).catch(function (err) {
console.error(err);
});
});
};
(0, _utilities.log)({
message: 'Copying templates into dist folder...'
});
(0, _fsExtra.removeSync)(_projectSettings.generatedTemplates);
(0, _fsExtra.ensureDirSync)(_projectSettings.generatedTemplates);
(0, _fsExtra.copySync)(_projectSettings.originalTemplates, _projectSettings.generatedTemplates, {
filter: ignoreDevFolders
});
removeDevFiles({
directory: _projectSettings.generatedTemplates
});
(0, _utilities.log)({
message: 'Creating a templates-folder in dist that has comments stripped out...'
});
(0, _fsExtra.removeSync)(_projectSettings.generatedTemplatesWithoutComments);
(0, _fsExtra.ensureDirSync)(_projectSettings.generatedTemplatesWithoutComments);
(0, _fsExtra.copySync)(_projectSettings.originalTemplates, _projectSettings.generatedTemplatesWithoutComments, {
filter: ignoreDevFolders
});
removeDevFiles({
directory: _projectSettings.generatedTemplatesWithoutComments
});
removeCommentsFromJSFiles({
directory: _projectSettings.generatedTemplatesWithoutComments
});
(0, _utilities.log)({
message: 'Finished templates task\n',
useSeparator: true
});