Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Rebase file references
  • Loading branch information
Frank Schmid committed Nov 17, 2017
commit 3404001db00c415b12ee8ce3384ad91fa85fa118
15 changes: 11 additions & 4 deletions lib/packExternalModules.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,20 @@ const isBuiltinModule = require('is-builtin-module');
/**
* Add the given modules to a package json's dependencies.
*/
function addModulesToPackageJson(externalModules, packageJson) {
function addModulesToPackageJson(externalModules, packageJson, pathToPackageRoot) {
_.forEach(externalModules, externalModule => {
const splitModule = _.split(externalModule, '@');
// If we have a scoped module we have to re-add the @
if (_.startsWith(externalModule, '@')) {
splitModule.splice(0, 1);
splitModule[0] = '@' + splitModule[0];
}
const moduleVersion = _.join(_.tail(splitModule), '@');
let moduleVersion = _.join(_.tail(splitModule), '@');
// We have to rebase file references to the target package.json
if (_.startsWith(moduleVersion, 'file:')) {
const filePath = _.replace(moduleVersion, /^file:/, '');
moduleVersion = _.replace(`file:${pathToPackageRoot}/${filePath}`, /\\/g, '/');
}
packageJson.dependencies = packageJson.dependencies || {};
packageJson.dependencies[_.first(splitModule)] = moduleVersion;
});
Expand Down Expand Up @@ -247,7 +252,8 @@ module.exports = {
description: `Packaged externals for ${this.serverless.service.service}`,
private: true
};
addModulesToPackageJson(compositeModules, compositePackage);
const relPath = path.relative(compositeModulePath, path.dirname(packageJsonPath));
addModulesToPackageJson(compositeModules, compositePackage, relPath);
this.serverless.utils.writeFileSync(compositePackageJson, JSON.stringify(compositePackage, null, 2));

// (1.a.2) Copy package-lock.json if it exists, to prevent unwanted upgrades
Expand Down Expand Up @@ -288,7 +294,8 @@ module.exports = {
_.map(packageForceIncludes, whitelistedPackage => ({ external: whitelistedPackage }))
), packagePath, dependencyGraph);
removeExcludedModules.call(this, prodModules, packageForceExcludes);
addModulesToPackageJson(prodModules, modulePackage);
const relPath = path.relative(modulePath, path.dirname(packageJsonPath));
addModulesToPackageJson(prodModules, modulePackage, relPath);
this.serverless.utils.writeFileSync(modulePackageJson, JSON.stringify(modulePackage, null, 2));

// GOOGLE: Copy modules only if not google-cloud-functions
Expand Down