6.0.2 • Public • Published

    API Stability NPM Version Downloads

    Utility to migrate Marko templates to avoid using deprecated features.


    Getting Started

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


    • --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.



    npm install @marko/migrate


    import fs from "fs";
    import migrate from "@marko/migrate";
    import { prompt } from "enquirer";
      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 are the same as the CLI options.


    npm i @marko/migrate

    DownloadsWeekly Downloads






    Unpacked Size

    27.8 kB

    Total Files


    Last publish


    • ryansolid
    • mlrawlings
    • austinkelleher
    • dylanpiercey
    • manthan.doshi
    • agliga