mirror of
https://github.com/bower/bower.git
synced 2026-04-24 03:00:19 -04:00
Compare commits
2 Commits
update-req
...
feature/de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
447c2e3c04 | ||
|
|
f535bd126a |
@@ -9,6 +9,7 @@ var PackageRepository = require('./PackageRepository');
|
||||
var semver = require('../util/semver');
|
||||
var copy = require('../util/copy');
|
||||
var createError = require('../util/createError');
|
||||
var dependencyLinker = require('../util/dependencyLinker');
|
||||
var scripts = require('./scripts');
|
||||
|
||||
function Manager(config, logger) {
|
||||
@@ -190,7 +191,13 @@ Manager.prototype.install = function (json) {
|
||||
return dissected;
|
||||
}, this);
|
||||
}, that);
|
||||
|
||||
})
|
||||
.then(function () {
|
||||
// Create symlinks for sub-dependencies
|
||||
var flattened = mout.object.mixIn({}, that._installed, that._dissected);
|
||||
return dependencyLinker.link(flattened, that._config, that._logger);
|
||||
})
|
||||
.then(function () {
|
||||
// Resolve with meaningful data
|
||||
return mout.object.map(that._dissected, function (decEndpoint) {
|
||||
return this.toData(decEndpoint);
|
||||
|
||||
@@ -6,7 +6,9 @@ var createError = require('./createError');
|
||||
|
||||
var isWin = process.platform === 'win32';
|
||||
|
||||
function createLink(src, dst, type) {
|
||||
function createLink(src, dst, options) {
|
||||
options = options || {};
|
||||
|
||||
var dstDir = path.dirname(dst);
|
||||
|
||||
// Create directory
|
||||
@@ -26,7 +28,12 @@ function createLink(src, dst, type) {
|
||||
})
|
||||
// Create symlink
|
||||
.then(function (stat) {
|
||||
type = type || (stat.isDirectory() ? 'dir' : 'file');
|
||||
var type = options.type || (stat.isDirectory() ? 'dir' : 'file');
|
||||
if (options.relative && !isWin) {
|
||||
src = path.relative(path.dirname(dst), src);
|
||||
} else {
|
||||
src = path.resolve(src);
|
||||
}
|
||||
|
||||
return Q.nfcall(fs.symlink, src, dst, type)
|
||||
.fail(function (err) {
|
||||
|
||||
39
lib/util/dependencyLinker.js
Normal file
39
lib/util/dependencyLinker.js
Normal file
@@ -0,0 +1,39 @@
|
||||
var Q = require('q');
|
||||
var Config = require('bower-config');
|
||||
var createLink = require('../util/createLink');
|
||||
var readJson = require('../util/readJson');
|
||||
var path = require('path');
|
||||
var fs = require('graceful-fs');
|
||||
|
||||
module.exports.link = function (packages, config, logger) {
|
||||
var rootComponentsDir = path.join(config.cwd, config.directory);
|
||||
|
||||
// create links for new packages and make sure that existing
|
||||
// ones has all dependencies linked
|
||||
var promises = Object.keys(packages).map(function (depName) {
|
||||
var dep = packages[depName];
|
||||
var depPath = dep.canonicalDir || path.join(rootComponentsDir, dep.name);
|
||||
var conf = Config.read(depPath);
|
||||
var componentsDir = path.join(conf.cwd, conf.directory);
|
||||
|
||||
return readJson(depPath)
|
||||
.spread(function (json, deprecated, assumed) {
|
||||
if (json.dependencies) {
|
||||
return Q.all(Object.keys(json.dependencies || {}).map(function (d) {
|
||||
var dst = path.join(componentsDir, d);
|
||||
var src = path.join(rootComponentsDir, d);
|
||||
|
||||
return Q.nfcall(fs.stat, dst)
|
||||
.fail(function () {
|
||||
logger.info('dep-link', d, {
|
||||
name: json.name + '#' + d
|
||||
});
|
||||
return createLink(src, dst, {relative: true});
|
||||
});
|
||||
}));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return Q.all(promises);
|
||||
};
|
||||
Reference in New Issue
Block a user