Socket
Book a DemoInstallSign in
Socket

build-deno

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Package was removed
Sorry, it seems this package was removed from the registry

build-deno

build-deno is a Node.js package that helps you build your Deno source code from your Node source code.

unpublished
latest
Source
npmnpm
Version
1.6.6
Version published
Maintainers
1
Created
Source

Build Deno

build-deno is a Node.js package that helps you build your Deno source code from your Node source code. It can copy files, change import paths, and skip files during the build process.

GitHub release GitHub GitHub Repo stars

Installation

Node

# npm
npm install --save-dev build-deno

# yarn
yarn add -D build-deno

# pnpm
pnpm add -D build-deno

Deno

Unlike Node, Deno doesn't use a package management like NPM and instead depends on direct URL imports. You can access build-deno on deno.land/x. This is how the most recent version may be imported:

You can also specify a particular version:

import { build } from 'npm:build-deno@^1.5';

or letest version:

import { build } from 'npm:build-deno';

NOTE: There isn't much of a change in how it's used, but the remainder of this README assumes you're using npm and importing straight from the build-deno package.

Usage

API

import type {
  Path,
  ChangePackage,
  SkipDirectory,
  SkipFile,
  CopyFiles,
  Options,
} from 'build-deno';
import { build } from 'build-deno';

const root: Path = '';

const rootDir: Path = 'src';

const outDir: Path = 'deno';

const changePackage: ChangePackage[] = [
  {
    package: `import { join as joinPath } from 'path';`,
    replace: `import { join as joinPath } from 'npm:path';`,
  },
  {
    package: `import { dirname, extname } from 'path';`,
    replace: `import { dirname, extname } from 'npm:path';`,
  },
  {
    package: `import { copyFile } from 'fs';`,
    replace: `import { copyFile } from 'npm:fs';`,
  },
  {
    byPackageName: true,
    package: `util`,
    replace: `import { promisify } from 'npm:util';`,
  },
  {
    package: `import { statSync } from 'fs';`,
    replace: `import { statSync } from 'npm:fs';`,
  },
  {
    byPackageName: true,
    package: 'fs/promises',
    replace: `import { readdir, readFile, mkdir, writeFile } from 'npm:fs/promises';`,
  },
  {
    package: `import { dirname } from 'path';`,
    replace: `import { dirname } from 'npm:path';`,
  },
  {
    package: `import { readdirSync } from 'fs';`,
    replace: `import { readdirSync } from 'npm:fs';`,
  },
];

const skipDirectory: SkipDirectory[] = [
  {
    dir: '__TEST__',
  },
];

const skipFile: SkipFile[] = [
  {
    dir: '',
    file: 'cli.ts',
  },
];

const skipExtension: SkipExtension[] = [
  {
    extension: '.mock.ts',
  },
];

const copyFiles: CopyFiles[] = [
  {
    from: 'README.md',
    to: 'README.md',
  },
];

const options: Options = {
  root,
  rootDir,
  outDir,
  changePackage,
  skipDirectory,
  skipFile,
  skipExtension,
  copyFiles,
};

build(options);

Options

  • root: The root directory of your Node project. Required.
  • rootDir: The directory of the Node source code. Required.
  • outDir: The directory where the Deno source code will be generated. Required.
  • changePackage: An array of objects that specify the package names to change the import path for. Optional.
  • skipDirectory: An array of directory names to skip during the build. Optional.
  • skipFile: An array of file paths to skip during the build. Optional.
  • skipExtension: An array of file extensions to skip during the build. Optional.
  • copyFiles: An array of file paths to copy from the Node source code to the Deno source code. Optional.

Types

build-deno exports the following types:

  • Path: A string representing a file path.
  • SkipFile: An object containing the dir and name of a file to skip.
  • ChangePackage: An object containing the packageName and path of a package to change the import path for.
  • SkipDirectory: An object containing the dir of a directory to skip.
  • CopyFiles: An object containing the from and to paths of a file to copy.
  • SkipExtension: An object containing the extension of a file to skip.
  • Options: An object containing the above properties.

Example

You can find an example of build-deno in use in the Denoify example project.

CLI Commands

To use build-deno, you can run the following commands:

build-deno

Builds your project with the configuration file. Make sure to add the configuration file in the root directory of your project. The configuration file name can be one of the following:

  • build-deno.config.js
  • build-deno.config.cjs
  • build-deno.config.mjs
  • build-deno.config.json

Example:

build-deno

NOTE: The configuration file path must be relative to the root directory of your project.

build-deno -C <config-file> or build-deno --config <config-file>

Builds your project with the specified configuration file.

Example:

build-deno -C build-deno.config.js

NOTE: The configuration file path must be relative to the root directory of your project.

build-deno -H or build-deno --help

Displays the help menu for build-deno.

Example:

build-deno -H

build-deno -V or build-deno --version

Displays the version of build-deno.

Example:

build-deno -V

Configuration

build-deno.config.js

Example Configuration File `build-deno.config.js`
module.exports = {
  root: '',
  rootDir: 'src',
  outDir: 'deno',
  changePackage: [
    {
      package: `import { join as joinPath } from 'path';`,
      replace: `import { join as joinPath } from 'npm:path';`,
    },
    {
      package: `import { dirname, extname } from 'path';`,
      replace: `import { dirname, extname } from 'npm:path';`,
    },
    {
      package: `import { copyFile } from 'fs';`,
      replace: `import { copyFile } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: `util`,
      replace: `import { promisify } from 'npm:util';`,
    },
    {
      package: `import { statSync } from 'fs';`,
      replace: `import { statSync } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: 'fs/promises',
      replace: `import { readdir, readFile, mkdir, writeFile } from 'npm:fs/promises';`,
    },
    {
      package: `import { dirname } from 'path';`,
      replace: `import { dirname } from 'npm:path';`,
    },
    {
      package: `import { readdirSync } from 'fs';`,
      replace: `import { readdirSync } from 'npm:fs';`,
    },
  ],
  skipDirectory: [
    {
      dir: '__TEST__',
    },
  ],
  skipFile: [
    {
      dir: '',
      name: 'cli.ts',
    },
  ],
  skipExtension: [
    {
      extension: '.mock.ts',
    },
  ],
  copyFiles: [
    {
      from: 'README.md',
      to: 'README.md',
    },
  ],
};

build-deno.config.cjs

Example Configuration File `build-deno.config.cjs`
module.exports = {
  root: '',
  rootDir: 'src',
  outDir: 'deno',
  changePackage: [
    {
      package: `import { join as joinPath } from 'path';`,
      replace: `import { join as joinPath } from 'npm:path';`,
    },
    {
      package: `import { dirname, extname } from 'path';`,
      replace: `import { dirname, extname } from 'npm:path';`,
    },
    {
      package: `import { copyFile } from 'fs';`,
      replace: `import { copyFile } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: `util`,
      replace: `import { promisify } from 'npm:util';`,
    },
    {
      package: `import { statSync } from 'fs';`,
      replace: `import { statSync } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: 'fs/promises',
      replace: `import { readdir, readFile, mkdir, writeFile } from 'npm:fs/promises';`,
    },
    {
      package: `import { dirname } from 'path';`,
      replace: `import { dirname } from 'npm:path';`,
    },
    {
      package: `import { readdirSync } from 'fs';`,
      replace: `import { readdirSync } from 'npm:fs';`,
    },
  ],
  skipDirectory: [
    {
      dir: '__TEST__',
    },
  ],
  skipFile: [
    {
      dir: '',
      name: 'cli.ts',
    },
  ],
  skipExtension: [
    {
      extension: '.mock.ts',
    },
  ],
  copyFiles: [
    {
      from: 'README.md',
      to: 'README.md',
    },
  ],
};

build-deno.config.mjs

Example Configuration File `build-deno.config.mjs`
export default {
  root: '',
  rootDir: 'src',
  outDir: 'deno',
  changePackage: [
    {
      package: `import { join as joinPath } from 'path';`,
      replace: `import { join as joinPath } from 'npm:path';`,
    },
    {
      package: `import { dirname, extname } from 'path';`,
      replace: `import { dirname, extname } from 'npm:path';`,
    },
    {
      package: `import { copyFile } from 'fs';`,
      replace: `import { copyFile } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: `util`,
      replace: `import { promisify } from 'npm:util';`,
    },
    {
      package: `import { statSync } from 'fs';`,
      replace: `import { statSync } from 'npm:fs';`,
    },
    {
      byPackageName: true,
      package: 'fs/promises',
      replace: `import { readdir, readFile, mkdir, writeFile } from 'npm:fs/promises';`,
    },
    {
      package: `import { dirname } from 'path';`,
      replace: `import { dirname } from 'npm:path';`,
    },
    {
      package: `import { readdirSync } from 'fs';`,
      replace: `import { readdirSync } from 'npm:fs';`,
    },
  ],
  skipDirectory: [
    {
      dir: '__TEST__',
    },
  ],
  skipFile: [
    {
      dir: '',
      name: 'cli.ts',
    },
  ],
  skipExtension: [
    {
      extension: '.mock.ts',
    },
  ],
  copyFiles: [
    {
      from: 'README.md',
      to: 'README.md',
    },
  ],
};

build-deno.config.json

Example Configuration File `build-deno.config.json`
{
  "root": "",
  "rootDir": "src",
  "outDir": "deno",
  "changePackage": [
    {
      "package": "import { join as joinPath } from 'path';",
      "replace": "import { join as joinPath } from 'npm:path';"
    },
    {
      "package": "import { dirname, extname } from 'path';",
      "replace": "import { dirname, extname } from 'npm:path';"
    },
    {
      "package": "import { copyFile } from 'fs';",
      "replace": "import { copyFile } from 'npm:fs';"
    },
    {
      "byPackageName": true,
      "package": "util",
      "replace": "import { promisify } from 'npm:util';"
    },
    {
      "package": "import { statSync } from 'fs';",
      "replace": "import { statSync } from 'npm:fs';"
    },
    {
      "byPackageName": true,
      "package": "fs/promises",
      "replace": "import { readdir, readFile, mkdir, writeFile } from 'npm:fs/promises';"
    },
    {
      "package": "import { dirname } from 'path';",
      "replace": "import { dirname } from 'npm:path';"
    },
    {
      "package": "import { readdirSync } from 'fs';",
      "replace": "import { readdirSync } from 'npm:fs';"
    }
  ],
  "skipDirectory": [
    {
      "dir": "__TEST__"
    }
  ],
  "skipFile": [
    {
      "dir": "",
      "name": "cli.ts"
    }
  ],
  "skipExtension": [
    {
      "extension": ".mock.ts"
    }
  ],
  "copyFiles": [
    {
      "from": "README.md",
      "to": "README.md"
    }
  ]
}

License

build-deno is licensed under the MIT License.

Keywords

deno

FAQs

Package last updated on 03 Mar 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.