Dedupe boot scripts
Remove duplicated entries in the array of boot scripts to run. Because the bootDirs defaults to process.cwd(), if the user manually includes scripts in the same directory, without specifying a bootDir, those scripts will be included multiple times.
This commit is contained in:
parent
beb4f8c34c
commit
301031b78f
|
@ -6,6 +6,7 @@ var toposort = require('toposort');
|
|||
var ConfigLoader = require('./config-loader');
|
||||
var debug = require('debug')('loopback:boot:compiler');
|
||||
var Module = require('module');
|
||||
var _ = require('lodash');
|
||||
|
||||
/**
|
||||
* Gather all bootstrap-related configuration data and compile it into
|
||||
|
@ -61,6 +62,10 @@ module.exports = function compile(options) {
|
|||
bootScripts = bootScripts.concat(findScripts(dir));
|
||||
});
|
||||
|
||||
// de-dedup boot scripts -ERS
|
||||
// https://github.com/strongloop/loopback-boot/issues/64
|
||||
bootScripts = _.uniq(bootScripts);
|
||||
|
||||
var modelsMeta = modelsConfig._meta || {};
|
||||
delete modelsConfig._meta;
|
||||
|
||||
|
|
|
@ -405,6 +405,18 @@ describe('compiler', function() {
|
|||
expect(instructions.files.boot).to.eql([initJs]);
|
||||
});
|
||||
|
||||
it('should remove duplicate scripts', function() {
|
||||
appdir.createConfigFilesSync();
|
||||
var initJs = appdir.writeFileSync('custom-boot/init.js',
|
||||
'module.exports = function(app) { app.fnCalled = true; };');
|
||||
var instructions = boot.compile({
|
||||
appRootDir: appdir.PATH,
|
||||
bootDirs:[path.dirname(initJs)],
|
||||
bootScripts: [initJs]
|
||||
});
|
||||
expect(instructions.files.boot).to.eql([initJs]);
|
||||
});
|
||||
|
||||
it('ignores models/ subdirectory', function() {
|
||||
appdir.createConfigFilesSync();
|
||||
appdir.writeFileSync('models/my-model.js', '');
|
||||
|
|
Loading…
Reference in New Issue