
Security News
Node.js Drops Bug Bounty Rewards After Funding Dries Up
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.
Powerful tool for easy typescript/javascript package development powered by esbuild and DTS bundle generator.
Install → Create package → Customize → Develop → Publish
This package highly inspired by TSDX, Microbundle, Create React Library.
You can create new package or integrate aqu into existing package. For package creation, we recommend to install aqu globally.
npm i -g aqu
Then, you can create new package:
aqu create <package>
npm i aqu -D
Then, add to your package.json:
{
...
"scripts": {
"build": "aqu build",
"start": "aqu watch",
"test": "aqu test",
"lint": "aqu lint"
}
}
By default, aqu will search for index file in src or lib folder (available extensions: .js, .jsx, .cjs, .mjs, .ts, .tsx)
If this doesn't suit for your package, you can specify source property in your package.json:
{
...
"source": "my/entry.js"
}
Or, if you want to specify multiple entrypoints, you can do it in aqu configuration file.
For creating new package, we recommend to install aqu globally.
In the shell, enter the command:
aqu create
Or using npx:
npx aqu create
Enter the details about your package and pick a template. Examples of generated projects you can find here
If you don't want to enter all the information, you can automatically pick all defaults, by toggling -y flag:
npx aqu create <package> -y
aqu automatically creates optimal configuration for your package on-the-fly.
Default aqu configuration:
var defaultConfig = {
format: ['cjs', 'esm'], // will generate multiple outputs: one for cjs and one for esm
cjsMode: 'mixed', // will generate separate files for development and production
outdir: 'dist', // default output directory
declaration: 'bundle', // will bundle declarations using https://github.com/timocov/dts-bundle-generator
externalNodeModules: true, // automatically will mark all node_modules as external
tsconfig: 'tsconfig.json', // default path to tsconfig
incremental: true, // will build incrementally
buildOptions: {}, // custom esbuild options
watchOptions: {
// chokidar watch options
ignored: ['node_modules/**', 'dist/**', 'build/**', 'out/**'], // by default, will ignore those folders
followSymlinks: false, // will not follow symlinks
},
};
For input, aqu will search index file inside lib or src folder (available extensions for index: .js, .jsx, .cjs, .mjs, .ts, .tsx)
Also, aqu will read your package.json and take source option to determine entrypoint, and name for package's name.
You can specify your own aqu configuration. By default, these files will be read inside your working directory:
aqu.config.jsaqu.config.cjsaqu.config.mjsaqu.config.tsaqu.config.json.aqurcIf your configuration has different name, you can specify --config option for aqu. Example:
aqu build --config=myconfig.js
Configuration file can export one configuration, as well as array of configurations. For example:
// aqu.config.js
// this works
module.exports = {
input: './asdf.js',
};
// as well as this
module.exports = [
{
input: './asdf.js',
},
{
input: './hello.js',
},
];
Available configuration options:
type: string
Specify custom library name. By default, aqu will try to load package name from package.json in current working directory.
type: string | string[]
Your library entrypoints. For each entrypoint aqu will generate output files, using this configuration. Default: index file in src or lib directories.
type: string
Directory, where will all files be generaten. Default: dist
type: string
Output file. Do not works when configuration should generate multiple outputs (multiple formats or multiple entrypoints or cjsMode: "multiple")
type: Format | Format[]
Output formats. Available formats: cjs, esm, iife. When cjs format picken, configuration option cjsMode works. Default ["cjs", "esm"] For more information about formats, see esbuild.
type: "development" | "production" | "mixed"
CommonJS generation mode. Works only when format includes cjs. If production - will generate minified bundle, development - normal development build, mixed - will generate both with one entrypoint - index.js. Default "mixed"
type: DeclarationType
Algorithm to emit declarations. Available options - none, normal, bundle. none - do not emit declarations, normal - default declaration emit (same as tsc does), bundle - generate declarations bundle using dts-bundle-generator. Default bundle.
type: string
Path to tsconfig. Default join(process.cwd(), "tsconfig.json").
type: boolean
Build incrementally. Default true. For more information, see esbuild.
type: boolean
Should exclude node_modules packages from bundle? Default true.
type: ESBuildOptions
Specify custom esbuild options.
type: ChokidarOptions
Specify custom chokidar watch options.
aqu creates default configs for ESLint, Prettier, Jest. If you don't like the defaults, you can create your own configuration and override all options.
aqu makes your life easier. It automatically handles Jest, ESlint, Prettier, ESBuild and typings emit.
Run command to build your package.
Usage:
aqu build
Watch your files and automatically rebuild project
Usage:
aqu watch
Lint files using ESLint.
Usage:
aqu lint
Run jest. Passes all rest arguments to jest.
Usage:
aqu test.
We highly recommend to use np for your package publishing.
If you have created your package using aqu create, then you can just run:
npm run publish
Or
yarn publish
MIT © Artiom Tretjakovas
FAQs
🌊 Powerful tool for easy typescript/javascript package development
We found that aqu 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
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.