Вы можете написать плагин, который будет принимать результат из hashsum
и просто использовать fs
для изменения вашего json.
Вот наивная реализация:
const fs = require('fs')
const path = require('path')
const through = require('through2')
const hashsum = require('gulp-hashsum')
const modifyJson = ({ fileName, src, property }) => through.obj((file, _, cb) => {
const { name } = path.parse(file.path)
if (name !== fileName) return cb(null, file)
const pathToJson = path.resolve(__dirname, src)
if (!fs.existsSync(pathToJson)) {
return cb(new Error(`${src} doesn't exist.`), file)
}
const json = JSON.parse(fs.readFileSync(pathToJson, 'utf8'))
const content = JSON.parse(file.contents)
if (typeof json[property] === 'undefined') console.warn(`${src} doesn't has any property named '${property}' A new one will be created.`)
json[property] = content
fs.writeFileSync(pathToJson, JSON.stringify(json))
return cb(null, file)
})
Использование:
exports.modifyJson = () =>
src(['app/**/*.js'])
.pipe(hashsum({
stream: true,
json: true,
}))
.pipe(modifyJson({
fileName: 'SHA1SUMS',
src: './test.json',
property: 'hashTable',
}))
У меня есть этот код в gist здесь.