Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
broccoli-destiny
Advanced tools
broccoli-destiny
is a wrapper around broccoli
that supports outputting Broccoli sub-trees to multiple target destinations.
broccoli-destiny
provides a CLI and a programmatic interface.
broccoli-destiny
supports most of broccoli
CLI's command line options. However, broccoli-destiny
currently only supports the build
command and does not support serve
.
broccoli-destiny build ./dist
will output the entire Broccoli tree to the ./dist
directory. This is essentially equivalent to broccoli build ./dist
.
Given the following Broccoli tree:
├── a
│ └── a.js
├── b
│ └── b.js
├── c
│ └── c.js
└── root.js
broccoli-destiny build a:./distA b:./distB dist
will output the sub-tree of ./a
into ./distA
, ./b
into ./distB
, and everything else into ./dist
:
├── distA
│ └── a.js
├── distB
│ └── b.js
├── c
│ └── c.js
└── root.js
By default, broccoli-destiny
will attempt to load a broccoli-destiny.config.js
file, if it exists. You can specify your own file path using the --destiny-path
option:
broccoli-destiny build --destiny-path=myCustomDestinyConfig.js
// export a function that accepts incoming Broccoli options
module.exports = (options) => {
// return the config
return {
// outgoing Broccoli options (passed to Brocfile)
options,
// custom broccoli-destiny targets go here
targets: [
],
// plugins (see below)
plugins: [],
};
};
Given the following Broccoli tree:
├── a
│ └── a.js
├── b
│ └── b.js
├── c
│ └── c.js
└── root.js
and the following broccoli-destiny.config.js
:
const path = require('path');
module.exports = (options) => {
return {
options,
targets: [
{
input: 'a',
output: path.resolve('distA'),
},
{
input: 'b',
output: path.resolve('distB'),
},
{
input: '.',
output: path.resolve('dist'),
},
],
};
};
and the following command:
broccoli-destiny build
will output the sub-tree of ./a
into ./distA
, ./b
into ./distB
, and everything else into ./dist
:
├── distA
│ └── a.js
├── distB
│ └── b.js
├── c
│ └── c.js
└── root.js
// MyDestinyPlugin.js
const path = require('path');
const { BroccoliDestinyPlugin } = require('broccoli-destiny');
const subTreeDir = './my-custom-tree';
module.exports = class MyDestinyPlugin extends BroccoliDestinyPlugin {
constructor(options) {
super();
this.customOptions = options;
}
init(destiny, { targets }) {
// initialize _before_ we load the Brocfile
const { customOptions } = this;
// return the new destiny targets
return {
// prepend our targets
targets: [
// <subTreeDir>/merged gets merged to <appRoot>/merged
{
input: path.join(subTreeDir, 'merged'),
output: path.join(customOptions.appRoot, 'merged'),
// we want to preserve the existing _codegen directory, so merge our output
merge: true,
},
// everything else in <subTreeDir>/ gets merged to the buildDest
{
input: destDir,
output: customOptions.buildDest,
},
// add the rest of the targets _after_ our custom targets
...targets,
],
};
}
// perform any custom setup actions to be invoked _before_ each build is started (but after Brocfile is loaded)
setup() {
super.setup();
// ...
}
// perform any custom cleanup actions to be invoked _after_ each build has finished
cleanup() {
super.cleanup();
// ...
}
};
// broccoli-destiny.config.js
const MyDestinyPlugin = require('./MyDestinyPlugin');
module.exports = (options) => {
return {
options,
plugins: [
new MyDestinyPlugin({
appRoot: __dirname,
// where `options.environment` is the Broccoli environment
buildDest: options.environment === 'production' ? path.resolve('./dist') : path.resolve('./tmp/dist')
})
]
}
};
FAQs
A broccoli wrapper that enables output to multiple directories
The npm package broccoli-destiny receives a total of 5 weekly downloads. As such, broccoli-destiny popularity was classified as not popular.
We found that broccoli-destiny demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.