UNPKG

s3-npm-cache

Version:

Lightweight runtime to cache NPM dependencies in S3

48 lines (38 loc) 1.37 kB
/* S3 NPM Cache */ var md5 = require('md5-file'), path = require('path'), fs = require('fs'), process = require('./lib/process'), misc = require('./lib/misc'), os = require('os'), s3 = require('./lib/s3'); var init = function (s3BucketName, packageJsonFileLocation) { var packageJsonFile = packageJsonFileLocation + '/package.json', nodeModulesFolder = packageJsonFileLocation + '/node_modules', s3PackageName = md5.sync(packageJsonFile) + "-" + os.platform() + "-" + os.arch() + ".tar.gz"; process.setProcessMetadata({ packageJsonFileLocation: packageJsonFileLocation, packageJsonFile: packageJsonFile, nodeModulesFolder: nodeModulesFolder, s3PackageName: s3PackageName }); if (misc.checkFileExists(nodeModulesFolder)) { console.log('Node modules already installed. Continuing...'); return; } if (!s3.checkCredentials()) { console.warn('AWS credentials not found. Npm installing...'); process.npmAction('install'); return; } console.log('Attempting to retrieve ZIP file from S3 -', path.join(s3BucketName, s3PackageName)); s3.setS3BucketName(s3BucketName); s3.getFileFromS3(s3PackageName) .then(process.unzipNodeModules) .catch(process.uploadNewFile); }; module.exports = { init: init };