@start/plugin-write
Version:
✏️ Write files with source maps to relative destination keeping folders structure
67 lines (58 loc) • 2.16 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
var _plugin = _interopRequireDefault(require("@start/plugin"));
var _default = outDirRelative => (0, _plugin.default)('write', ({
logPath
}) => async ({
files
}) => {
const path = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('path')));
const {
writeFile
} = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('pifs')));
const {
default: movePath
} = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('move-path')));
const {
makeDir
} = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('dirdir')));
return {
files: await Promise.all(files.map(async file => {
const outFile = movePath(file.path, outDirRelative);
const outDir = path.dirname(outFile);
await makeDir(outDir);
const writeFiles = [];
let fileData = file.data;
if (file.map != null) {
const inFile = path.basename(file.path);
const inExtname = path.extname(file.path);
const sourcemapFile = `${inFile}.map`;
const sourcemapPath = path.join(outDir, sourcemapFile);
const sourcemapData = JSON.stringify(file.map);
if (inExtname === '.css') {
fileData += '\n/*# sourceMappingURL=';
fileData += sourcemapFile;
fileData += ' */';
} else {
fileData += '\n//# sourceMappingURL=';
fileData += sourcemapFile;
}
writeFiles.push(writeFile(sourcemapPath, sourcemapData, 'utf8').then(() => {
logPath(sourcemapPath);
}));
}
writeFiles.push(writeFile(outFile, fileData, 'utf8').then(() => {
logPath(outFile);
}));
await Promise.all(writeFiles);
return { ...file,
path: outFile
};
}))
};
});
exports.default = _default;