Skip to content

Commit

Permalink
fix #1614, avoid generating links of devDependencies when installing …
Browse files Browse the repository at this point in the history
…component as packages because the package manager never install them
  • Loading branch information
davidfirst committed May 11, 2019
1 parent f7f16ed commit db624cf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 7 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

## [unreleased]

- avoid generating links of devDependencies when installing component as packages (#1614)
- fix dependency resolution to identify link (proxy) files correctly
- fix bit status to not show a component as modified after tag when the version is modified in the dependent package.json
- fix "npm ERR! enoent ENOENT" errors when importing/installing multiple components
Expand Down
9 changes: 8 additions & 1 deletion e2e/flows/dependencies-as-packages.e2e.2.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ chai.use(require('chai-fs'));
helper.createFile('utils', 'is-string.js', fixtures.isString);
helper.addComponentUtilsIsString();
helper.createComponentBarFoo(fixtures.barFooFixture);
helper.addComponentBarFoo();
// creating a dev dependency for bar/foo to make sure the links are not generated. (see bug #1614)
helper.createFile('fixtures', 'mock.json');
helper.addComponent('fixtures');
helper.createFile('bar', 'foo.spec.js', "require('../fixtures/mock.json');");
helper.addComponent('bar/foo.js', { t: 'bar/foo.spec.js', i: 'bar/foo' });
helper.tagAllComponents();
helper.tagAllComponents('-s 0.0.2');
helper.exportAllComponents();
Expand All @@ -37,15 +41,18 @@ chai.use(require('chai-fs'));
helper.importComponent('bar/foo');
helper.importComponent('utils/is-type');
helper.importComponent('utils/is-string');
helper.importComponent('fixtures');

helper.importNpmPackExtension();
helper.removeRemoteScope();
npmCiRegistry.publishComponent('utils/is-type');
npmCiRegistry.publishComponent('utils/is-string');
npmCiRegistry.publishComponent('bar/foo');
npmCiRegistry.publishComponent('fixtures');
npmCiRegistry.publishComponent('utils/is-type', '0.0.2');
npmCiRegistry.publishComponent('utils/is-string', '0.0.2');
npmCiRegistry.publishComponent('bar/foo', '0.0.2');
npmCiRegistry.publishComponent('fixtures', '0.0.2');
});
after(() => {
npmCiRegistry.destroy();
Expand Down
20 changes: 14 additions & 6 deletions src/links/link-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ function getComponentLinks({
bitMap = bitMap || consumer.bitMap;
const componentMap: ComponentMap = bitMap.getComponent(component.id);
component.componentMap = componentMap;
const directDependencies: Dependency[] = _getDirectDependencies(component, componentMap);
const flattenedDependencies: BitIds = _getFlattenedDependencies(component, componentMap);
const directDependencies: Dependency[] = _getDirectDependencies(component, componentMap, createNpmLinkFiles);
const flattenedDependencies: BitIds = _getFlattenedDependencies(component, componentMap, createNpmLinkFiles);
const links = directDependencies.map((dep: Dependency) => {
if (!dep.relativePaths || R.isEmpty(dep.relativePaths)) return [];
const getDependencyIdWithResolvedVersion = (): BitId => {
Expand Down Expand Up @@ -134,15 +134,23 @@ function _getPackageJsonFile(component: Component) {
});
}

function _getDirectDependencies(component: Component, componentMap: ComponentMap): Dependency[] {
function _getDirectDependencies(
component: Component,
componentMap: ComponentMap,
createNpmLinkFiles: boolean
): Dependency[] {
// devDependencies of Nested components are not written to the filesystem, so no need to link them.
return componentMap.origin === COMPONENT_ORIGINS.NESTED
return componentMap.origin === COMPONENT_ORIGINS.NESTED || createNpmLinkFiles
? component.dependencies.get()
: component.getAllNonEnvsDependencies();
}

function _getFlattenedDependencies(component: Component, componentMap: ComponentMap): BitIds {
return componentMap.origin === COMPONENT_ORIGINS.NESTED
function _getFlattenedDependencies(
component: Component,
componentMap: ComponentMap,
createNpmLinkFiles: boolean
): BitIds {
return componentMap.origin === COMPONENT_ORIGINS.NESTED || createNpmLinkFiles
? component.flattenedDependencies
: BitIds.fromArray(component.getAllNonEnvsFlattenedDependencies());
}
Expand Down

0 comments on commit db624cf

Please sign in to comment.