Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Automated JavaScript project management.
The project structure when using this is quite strict, to ease replication and configuration overhead.
All source code should be placed under src
, with the main entry
point being src/index.js
.
All test files should be placed under test
. Individual test files should end in .spec.js
and setup files for the node and the browser should be test/node.js
and test/browser.js
respectively.
Your package.json
should have the following entries.
"main": "src/index.js",
"scripts": {
"lint": "aegir-lint",
"release": "aegir-release",
"build": "aegir-build",
"test": "aegir-test",
"test:node": "aegir-test node",
"test:browser": "aegir-test browser",
"coverage": "aegir-coverage",
"coverage-publish": "aegir-coverage publish"
}
To bring you its many benefits, aegir
requires
Linting uses eslint and standard with some custom rules to enforce some more strictness.
You can run it using
$ aegir-lint
# or as gulp task
$ gulp lint
You can run it using
$ aegir-test
# or as gulp task
$ gulp test
There are also browser and node specific tasks
$ aegir-test node
$ gulp test:node
$ aegir-test browser
$ gulp test:browser
If you want to run tests in a webworker you can also pass --webworker
as a flag to enable that.
If the needed environment variables are set, tests are also run on [Sauce Labs]. You will need
$SAUCE=true
SAUCE_USERNAME=<username>
SAUCE_ACCESS_KEY=<access key>
Loading fixture files in node and the browser can be painful, that's why aegir provides
a method to do this. For it to work you have to put your fixtures in the folder test/fixtures
, and then
// test/awesome.spec.js
const loadFixture = require('aegir/fixtures')
const myFixture = loadFixture(__dirname, 'fixtures/largefixture')
If you write a module like interface-ipfs-core which is to be consumed by other modules tests you need to pass in a third parameter such that the server is able to serve the correct files.
For example
// awesome-tests module
const loadFixture = require('aegir/fixtures')
const myFixture = loadFixture(__dirname, 'fixtures/coolfixture', 'awesome-tests')
// tests for module using the awesome-tests
require('awesome-tests')
// .aegir.js file in the module using the awesome-tests module
'use strict'
module.exports = {
karma: {
files: [{
pattern: 'node_modules/awesome-tests/test/fixtures/**/*',
watched: false,
served: true,
included: false
}]
}
}
You can run it using
$ aegir-coverage
# or as gulp task
$ gulp coverage
To auto publish coverage reports from Travis to Coveralls add this to
your .travis.yml
file. For more details see node-coveralls.
script:
- npm run coverage
after_success:
- npm run coverage-publish
This will build a browser ready version into dist
, so after publishing the results will be available under
https://unpkg.com/<module-name>/dist/index.js
https://unpkg.com/<module-name>/dist/index.min.js
You can run it using
$ aegir-build
# or as gulp task
$ gulp build
Specifying a custom entry file for Webpack
By default, aegir
uses src/index.js
as the entry file for Webpack. You can customize which file to use as the entry point by specifying entry
field in your user configuration file. To do this, create .aegir.js
file in your project's root diretory and add point the entry
field to the file Webpack should use as the entry:
module.exports = {
entry: "src/browser-index.js",
}
Webpack will use the specified file as the entry point and output it to dist/<filename>
, eg. dist/browser-index.js
.
If .aegir.js
file is not present in the project, webpack will use src/index.js
as the default entry file.
package.json
CHANGELOG.md
git push
to upstream/master
GH_TOKEN
is available)# Major release
$ gulp release --type major
$ aegir-release --type major
# Minor relase
$ gulp release --type minor
$ aegir-release --type minor
# Patch release
$ gulp release
$ aegir-release
You can also specify a --env
for a release, which can be either
'node'
, 'browser'
or 'no-build'
.
$ aegir-release --env node
$ gulp release --env node
You can generate a changelog for all versions by using --first
$ aegir-relase --first
You can skip all changelog generation and the github release by passing
in --no-changelog
.
If you want documentation generation you can pass --docs
to the release task to build documentation and publish it to the gh-pages
branch.
You can use aegir-docs
to generate documentation. This uses documentation.js with the theme [https://github.com/dignifiedquire/clean-documentation-theme].
To publish the documentation automatically to the gh-pages
branch you can run
$ aegir-docs --publish
There is a badge.
[![aegir](https://img.shields.io/badge/follows-aegir-blue.svg?style=flat-square)](https://github.com/dignifiedquire/aegir)
MIT
FAQs
JavaScript project management
The npm package aegir receives a total of 4,565 weekly downloads. As such, aegir popularity was classified as popular.
We found that aegir demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.