UNPKG

@start/plugin-write

Version:

✏️ Write files with source maps to relative destination keeping folders structure

67 lines (58 loc) 2.16 kB
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;