
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
aurelia-installer
Advanced tools
The missing brother of Aurelia CLI
All automated and provided as a CLI for your Aurelia workflows!
npm i aurelia-installer -g
init
initialize your project for better ai
experience (optional)App layout
ai app
create main app src layoutai app layout <name>
add additional app with own src layoutai app switch <name>
switch to working on a different appPlugin
plugin <name>
install and configure a pluginplugin :list
list all registered pluginsComponent
create <name>
create a new component folderinstall <name>
install/mount from git repouninstall <name>
install/unmountbundle [name]
bundle component dependencies with appunbundle <name>
unbundle component dependencies from appVendor library
library <name>
bundle a vendor library (with typings of same name if available)library :list
list all registered vendor libslibrary <name> :unbundle
unbundle a vendor libTypings
typings <name>
install typings for a vendor libtypings :list
list all registered typingsComing soon Installer commands will effect only in current/designated app when you have multiple sub-apps!
We recommend that you first run ai init
to initialize your installer preferences (stored in installer.json
).
ai app
Define app layout preferences:
multi
, simple
or advanced
)/src
folder)app layout <name> <laout name>
- add an app with a src layoutExamples:
app layout guest
- create default app layout for guest
appapp layout login simple
- create simple
app layout for login
Please contribute your own favorite app layouts!
Switch which application you are working on:
app switch <name>
- switch to work with selected appapp switch :root
- switch to src rootThis will effect where components are created, mounted and unmounted
A component
is an application entity. Typically it consists of at least a ViewModel with an optional View associated.
The component can also have dependencies to external modules and 3rd party libraries.
Components are meant as a larger entities than elements
, which are primitives, like molecule vs. atom.
A component can contain other components and elements! Each component lives in its own folder for clean separation.
Components are designed to make it trivial to share and reuse common application functionality across projects or within the Aurelia community. No more fudging around with complex configuration. The component is made ready to go! Components are the modular keystones for Aurelia apps!
Please see how to structure an aurelia application
Components can be globalised for use as a custom element, by using globalResources
via features.
export function configure(config) {
config.globalResources('markdown/markdown', './disco-light', .. );
}
See making custom element global
You should mount application components directly into your application on a given mount path which coresponds to a route (section of your app).
Unmounted components by convention live in src/components
.
aurelia-installer
can manage the creation, installation and application bundling of components!
The installer keeps track of your components in installer.json
. This registry is also used to later uninstall
or find the location of a component by name if needed.
contact-detail is a sample component
A component should have an install.json which tells the installer how to install its dependencies:
bundles
(ie. pre-registered dependencies)dependencies
configs for 3rd party librariestypings
for 3rd party libraries{
"bundles": [
"foundation"
],
"dependencies": [
"jquery",
{
"name": "bootstrap",
"path": "../node_modules/bootstrap/dist",
"main": "js/bootstrap.min",
"deps": ["jquery"],
"exports": "$",
"resources": [
"css/bootstrap.css"
]
}
],
"typings": [
"nprogress"
]
}
Note: You can also add a "prepend"
section, for dependencies to be prepended to the bundle.
Unmounted component example
General purpose components such as 'large-modalthat are reused in multiple parts of your app remain unmounted and live in
src/components`.
src/components/large-modal
index.html
index.js
package.json
install.json
We use the index
convention to signify the main entry point of the component.
Mounted under contacts
Components specific to a particular domain should be mounted in that domain, such as contacts
src/contacts/contact-detail
index.html
index.js
package.json
install.json
Download a component from a git repo directly into your application mount path
ai install kristianmandrup/contact-detail contacts
Repo formats available see here
github:owner/name
or simply owner/name
gitlab:owner/name
bitbucket:owner/name
If you have run ai init
and set a default git account, the installer will assume this account by default.
This means you can just write the name of your component repo to install it!
ai install contact-detail
- MAGIC!
After installing a component you need to bundle it with the app.
ai bundle
(all) or ai bundle contact-detail
This will merge the component dependencies with app dependencies in a crafty manner! It will also install any typings required for TypeScript.
ai uninstall contact-detail
Removes the component from your app!
Note: You can then unbundle
component dependencies if needed.
ai library :list
- to list registered vendor bundles
ai library bootstrap
- install bootstrap library
Will lookup the specified vendor library in registry/vendor-libs.json
by name.
If an entry is found, will add this to vendor bundle entries in aurelia.json
Please update registry/vendor-libs.json
with your favorite vendor library bundle specs.
ai plugin :list
- to list registered plugins
ai plugin validation
Supported plugins: All the official and 3rd party plugins listed here
There is also some support for more customized install procedures, such as for auth
and materialize
plugins via custom installer classes.
Please provide configurations for your own plugins ;)
Please update registry/plugins.json
with your favorite auelia plugins.
Install TypeScript d.ts
file(s) for a vendor library.
ai typings :list
- list registered typing installs
ai typings nprogress
- install typings for nprogress
Uses registry/typings.json
for custom definitions which can't be installed for Aurelia by name via standard typings.
If no typings install is registered, it will by default try to install from DefinitelyTyped repo:
typings install dt~<name> --global
such as typings install dt~bootstrap --global
Note: This command will abort unless you have typescript
defined as your transpiler in aurelia.json
Please update the registry/typings.json
with more typings install locations ;)
Planned features coming soon...
Many components will share a subset of dependencies while depending on unique libs for their own particular behavior. Imagine a set of components all using bootstrap, but with different behavior, perhaps using different jquery plugins but sharing dependency on jquery etc. The developer should not be left to sort out and maintain this dependency hell! Component dependency management to the rescue!
How it could work
We need to monitor which installed components are bundled in installer.json
(ie. bundled: true
).
We should also have an autoBundling: true
setting. When we unbundle dependency libs of a component,
we could iterate all installed components for their dependencies and check for overlaps.
Then only unbundle libs with no overlaps.
The ai init
should ask if git workflow should be enabled. If gitWorkflow: true
in installer.json
, each install command will be finalized
with its own commit unless there is an error.
First link module globally:
npm link
Then continue development and test commands in an test Aurelia project.
MIT
FAQs
CLI for managing aurelia components and vendor libs
The npm package aurelia-installer receives a total of 0 weekly downloads. As such, aurelia-installer popularity was classified as not popular.
We found that aurelia-installer 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
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.