Socket
Socket
Sign inDemoInstall

unbuild

Package Overview
Dependencies
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

unbuild - npm Package Compare versions

Comparing version 0.0.4 to 0.1.0

105

dist/chunks/build.js

@@ -58,20 +58,29 @@ 'use strict';

var __defProp = Object.defineProperty;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
var __assign = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
function validateDependencies(ctx) {
const usedDependencies = new Set();
const unusedDependencies = new Set(Object.keys(ctx.pkg.dependencies || {}));
const implicitDependnecies = new Set();
for (const id of ctx.usedImports) {
unusedDependencies.delete(id);
usedDependencies.add(id);
}
if (Array.isArray(ctx.dependencies)) {
for (const id of ctx.dependencies) {
unusedDependencies.delete(id);
}
return a;
};
}
for (const id of usedDependencies) {
if (!ctx.externals.includes(id) && !id.startsWith("chunks/") && !ctx.externals.includes(id.split("/")[0])) {
implicitDependnecies.add(id);
}
}
if (unusedDependencies.size) {
consola__default['default'].warn("Potential unused dependencies found:", Array.from(unusedDependencies).map((id) => chalk__default['default'].cyan(id)).join(", "));
}
if (implicitDependnecies.size) {
consola__default['default'].warn("Potential implicit dependencies found:", Array.from(implicitDependnecies).map((id) => chalk__default['default'].cyan(id)).join(", "));
}
}
async function rollupBuild(ctx) {
var _a;
if (ctx.stub) {

@@ -88,5 +97,6 @@ for (const entry of ctx.entries.filter((entry2) => entry2.builder === "rollup")) {

const rollupOptions = getRollupOptions(ctx);
if (!((_a = rollupOptions.input) == null ? void 0 : _a.length)) {
if (!Object.keys(rollupOptions.input).length) {
return;
}
console.log(ctx.externals);
const buildResult = await rollup.rollup(rollupOptions);

@@ -112,5 +122,6 @@ const allOutputOptions = rollupOptions.output;

const typesBuild = await rollup.rollup(rollupOptions);
await typesBuild.write(__assign(__assign({}, allOutputOptions[0]), {
entryFileNames: "[name].d.ts"
}));
await typesBuild.write({
dir: upath.resolve(ctx.rootDir, ctx.outDir),
format: "esm"
});
}

@@ -121,3 +132,3 @@ function getRollupOptions(ctx) {

context: ctx.rootDir,
input: ctx.entries.filter((entry) => entry.builder === "rollup").map((entry) => upath.resolve(ctx.rootDir, entry.input)),
input: Object.fromEntries(ctx.entries.filter((entry) => entry.builder === "rollup").map((entry) => [entry.name, upath.resolve(ctx.rootDir, entry.input)])),
output: [

@@ -180,2 +191,4 @@ {

const schema = untyped.resolveSchema(srcConfig, defaults);
await promises.mkdir(upath.dirname(genDir)).catch(() => {
});
await promises.mkdir(genDir).catch(() => {

@@ -217,3 +230,8 @@ });

const _require = jiti__default['default'](rootDir);
const buildConfig = _require("./build.config").default;
let buildConfigFile;
try {
buildConfigFile = _require.resolve("./build.config");
} catch (e) {
}
const buildConfig = buildConfigFile ? _require("./build.config").default : {};
const pkg = _require("./package.json");

@@ -230,2 +248,3 @@ const ctx = defu__default['default'](buildConfig, {

untyped: void 0,
clean: true,
stub,

@@ -237,3 +256,3 @@ buildEntries: [],

for (const entry of ctx.entries) {
if (!entry.name) {
if (typeof entry.name !== "string") {
entry.name = upath.basename(entry.input);

@@ -258,11 +277,13 @@ }

}
const outDir = upath.resolve(ctx.rootDir, ctx.outDir);
await promises.unlink(outDir).catch(() => {
});
await util.promisify(rimraf__default['default'])(outDir);
await promises.mkdir(outDir).catch(() => {
});
if (ctx.clean) {
const outDir = upath.resolve(ctx.rootDir, ctx.outDir);
await promises.unlink(outDir).catch(() => {
});
await util.promisify(rimraf__default['default'])(outDir);
await promises.mkdir(outDir).catch(() => {
});
}
await typesBuild(ctx);
await mkdistBuild(ctx);
await rollupBuild(ctx);
await mkdistBuild(ctx);
consola__default['default'].success(chalk__default['default'].green("Build succeed for " + pkg.name));

@@ -276,25 +297,3 @@ for (const entry of ctx.buildEntries) {

}
const usedDependencies = new Set();
const unusedDependencies = new Set(Object.keys(pkg.dependencies || {}));
const implicitDependnecies = new Set();
for (const id of ctx.usedImports) {
unusedDependencies.delete(id);
usedDependencies.add(id);
}
if (Array.isArray(buildConfig.dependencies)) {
for (const id of buildConfig.dependencies) {
unusedDependencies.delete(id);
}
}
for (const id of usedDependencies) {
if (!ctx.externals.includes(id) && !id.startsWith("chunks/") && !ctx.externals.includes(id.split("/")[0])) {
implicitDependnecies.add(id);
}
}
if (unusedDependencies.size) {
consola__default['default'].warn("Potential unused dependencies found:", Array.from(unusedDependencies).map((id) => chalk__default['default'].cyan(id)).join(", "));
}
if (implicitDependnecies.size) {
consola__default['default'].warn("Potential implicit dependencies found:", Array.from(implicitDependnecies).map((id) => chalk__default['default'].cyan(id)).join(", "));
}
validateDependencies(ctx);
consola__default['default'].log("");

@@ -301,0 +300,0 @@ }

'use strict';
const path = require('path');
const promises = require('fs/promises');
const mri = require('mri');

@@ -9,2 +8,3 @@ const build = require('./chunks/build.js');

require('module');
require('fs/promises');
require('upath');

@@ -33,11 +33,7 @@ require('chalk');

const args = mri__default['default'](process.argv.splice(2));
if (args.all) {
const pkgsDir = path.resolve(process.cwd(), "packages");
const pkgs = await promises.readdir(pkgsDir);
for (const pkg of pkgs) {
await build.build(path.resolve(pkgsDir, pkg), args.stub);
}
} else {
await build.build(path.resolve(process.cwd(), args._[0] || "."), args.stub);
}
const rootDir = path.resolve(process.cwd(), args._[0] || ".");
await build.build(rootDir, args.stub).catch((err) => {
console.error(`Error building ${rootDir}: ${err}`);
throw err;
});
}

@@ -44,0 +40,0 @@ main().catch((err) => {

@@ -14,2 +14,3 @@ declare function build(rootDir: string, stub: boolean): Promise<void>;

entries: BuildEntry[];
clean: boolean;
outDir: string;

@@ -16,0 +17,0 @@ genDir: string;

{
"name": "unbuild",
"version": "0.0.4",
"description": "",
"version": "0.1.0",
"description": "An unified javascript build system",
"repository": "unjs/unbuild",

@@ -6,0 +6,0 @@ "license": "MIT",

@@ -8,2 +8,50 @@ # unbuild

> An unified javascript build system
**📦 Optimized bundler**
Robust [rollup](https://rollupjs.org) based bundler that supports typescript and generates commonjs and module formats + type declarations.
**📁 Bundleless build**
Integration with [mkdist](https://github.com/un-contrib/mkdist) for generating bundleles dists with file-to-file transpilation.
**✨ Passive watcher**
Stub `dist` once using [jiti](https://github.com/unjs/jiti) and you can try and link your project without need to watch and rebuild during development.
**✍ Untype Generator**
Integration with [untyped](https://untyped.unjs.io/).
**✔️ Build Validator**
Automatically check for potential **missing** and **unused** [dependencies](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#dependencies). Also you can check output size and exports quickly in CLI output.
## Usage
Create `src/index.ts` and `build.config.ts`:
```ts
export default {
entries: [
'./src/index'
]
}
```
```sh
npx unbuild
```
## Configuration
You can either use `build` key in `package.json` or `build.config.{js,ts,json}` to specify configuration.
See options [here](./src/types.ts).
## Fun fact
This library is built using itself for publishing!
## License

@@ -10,0 +58,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc