@marko/migrate

6.0.2 • Public • Published


@marko/migrate
API Stability NPM Version Downloads

Utility to migrate Marko templates to avoid using deprecated features.

CLI

Getting Started

npx @marko/migrate ./components/my-component.marko

Options

  • --indent: The indent string to use when printing the migrated source (defaults to a String with four spaces)
  • --noSemi: If set, will format JS without semicolons when printing the migrated source.
  • --singleQuote: If set, will prefer single quotes when printing the migrated source.
  • --maxLen: The max line length to use when printing the migrated source (defaults to 80, set to -1 to disable)
  • --syntax: The syntax to use when printing the migrated source. Can either be "html" or "concise" (defaults to "html")
  • --dry-run: Runs the migration in memory only.
  • --safe: Run all safe migrations ignoring any prompts.

API

Installation

npm install @marko/migrate

Example

import fs from "fs";
import migrate from "@marko/migrate";
import { prompt } from "enquirer";

migrate({
  files: ["./components/**/*.marko"],
  prompt(options) {
    // This is used for "optional" migrations.
    // By default the cli mode uses enquirer to prompt the user via cli.
    // The programtic api does not come with this by default and can be overwritten.
    return prompt(options);
  },
  onWriteFile(file, source) {
    // A file has been modified, we can save it to disk.
    // Note you can also return a promise.
    fs.writeFileSync(file, source, "utf-8");
  },
  onRenameFile(from, to) {
    // A file has been renamed, lets move it on the disk.
    // Note you can also return a promise.
    fs.renameSync(file, fileNames[file]);
  },
  onUpdateDependents(from, to) {
    // This indicates that the dependents of the `from` file need to update
    // Their paths to point to the `to` file.
    // When running in CLI mode this will use https://github.com/marko-js/utils/tree/master/packages/dependent-path-update
  }
}).then(() => {
  // Migration has completed.
  // Output contains an object with all of the migrated component sources.
  console.log("migrated all files");

  for (const file in fileContents) {
    // Save all updated files to disk.
    fs.writeFileSync(file, fileContents[file], "utf-8");
  }

  for (const file in fileNames) {
    // Update locations of moved files on disk.
    fs.renameSync(file, fileNames[file]);
  }
});

Options

Options are the same as the CLI options.

Package Sidebar

Install

npm i @marko/migrate

Weekly Downloads

40

Version

6.0.2

License

MIT

Unpacked Size

27.8 kB

Total Files

12

Last publish

Collaborators

  • tigt
  • ryanturnquist
  • dylanpiercey
  • ryansolid
  • mlrawlings
  • agliga