mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
947 B
33 lines
947 B
'use strict'
|
|
var path = require('path')
|
|
var fs = require('graceful-fs')
|
|
var iferr = require('iferr')
|
|
var inflateShrinkwrap = require('./inflate-shrinkwrap.js')
|
|
var parseJSON = require('../utils/parse-json.js')
|
|
|
|
var readShrinkwrap = module.exports = function (child, next) {
|
|
if (child.package._shrinkwrap) return process.nextTick(next)
|
|
fs.readFile(path.join(child.path, 'npm-shrinkwrap.json'), function (er, data) {
|
|
if (er) {
|
|
child.package._shrinkwrap = null
|
|
return next()
|
|
}
|
|
try {
|
|
child.package._shrinkwrap = parseJSON(data)
|
|
} catch (ex) {
|
|
child.package._shrinkwrap = null
|
|
return next(ex)
|
|
}
|
|
return next()
|
|
})
|
|
}
|
|
|
|
module.exports.andInflate = function (child, next) {
|
|
readShrinkwrap(child, iferr(next, function () {
|
|
if (child.package._shrinkwrap) {
|
|
return inflateShrinkwrap(child, child.package._shrinkwrap.dependencies || {}, next)
|
|
} else {
|
|
return next()
|
|
}
|
|
}))
|
|
}
|
|
|