UNPKG

gulp-crisper

Version:

Gulp plugin for crisper that split inline scripts from an HTML file for CSP compliance

53 lines (45 loc) 1.15 kB
'use strict'; var path = require('path'); var gutil = require('gulp-util'); var through = require('through2'); var crisper = require('crisper'); var oassign = require('object-assign'); function splitFile(file, filename, contents) { return new gutil.File({ cwd: file.cwd, base: file.base, path: path.join(path.dirname(file.path), filename), contents: new Buffer(contents) }); } function getFilename(filepath) { var basename = path.basename(filepath, path.extname(filepath)); return { html: basename + '.html', js: basename + '.js' }; } module.exports = function (opts) { return through.obj(function (file, enc, cb) { if (file.isNull()) { cb(null, file); return; } if (file.isStream()) { cb(new gutil.PluginError('gulp-crisper', 'Streaming not supported')); return; } var splitfile = getFilename(file.path); var split = crisper(oassign({}, { source: file.contents.toString(), jsFileName: splitfile.js }, opts)); var stream = this; Object.keys(split).forEach(function (type) { if (split[type]) { stream.push(splitFile(file, splitfile[type], split[type])); } }); cb(); }); };