diff options
-rw-r--r-- | lib/utils/lifecycle.js | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/utils/lifecycle.js b/lib/utils/lifecycle.js index 91d46e00b..fbecc0b53 100644 --- a/lib/utils/lifecycle.js +++ b/lib/utils/lifecycle.js @@ -31,6 +31,7 @@ function lifecycle (pkg, stage, cb) { var env = makeEnv(pkg) env.npm_lifecycle_event = stage env.npm_lifecycle_script = pkg.scripts[stage] + log.silly(env, "lifecycle env") exec("sh", ["-c", env.npm_lifecycle_script], env, function (er) { if (er && !npm.ROLLBACK) { log("Failed to exec "+stage+" script", pkg._id) @@ -65,18 +66,20 @@ function makeEnv (data, prefix, env) { } for (var i in data) if (i.charAt(0) !== "_") { + var envKey = (prefix+i).replace(/[^a-zA-Z0-9_]/g, '_') if (data[i] && typeof(data[i]) === "object") { - env[prefix+i] = JSON.stringify(data[i]) - makeEnv(data[i], prefix+i+"_", env) + env[envKey] = JSON.stringify(data[i]) + makeEnv(data[i], envKey+"_", env) } else { - env[prefix+i] = String(data[i]) + env[envKey] = String(data[i]) } } if (prefix !== "npm_package_") return env prefix = "npm_config_" var conf = npm.config.get() for (var i in conf) if (i.charAt(0) !== "_") { - env[prefix+i] = String(conf[i]) + var envKey = (prefix+i).replace(/[^a-zA-Z0-9_]/g, '_') + env[envKey] = String(conf[i]) } return env } |