Neutrino Packing Machine

    TypeScript icon, indicating that this package has built-in type declarations

    3.22.1 • Public • Published



    A zero-configuration CLI for packaging libraries and CLI applications.

    Getting Started


    pnpm i -D @liuli-util/cli # Local installation
    pnpm i -g @liuli-util/cli # global install


    liuli-cli build lib # Package the library
    liuli-cli build cli # Package cli references

    Adding the -w option starts the rollup monitoring mode, the dist/ will not be compressed and the dependencies will not be added to the bundle.

    watchdog mode


    liuli-cli generate <name> --template lib # Generate ts-lib project
    liuli-cli generate <name> --template cli # generate cli project

    util also supports interactive project creation

    liuli-cli generate

    liuli-cli interactive creation screenshot


    Support for deploying front-end resources to a remote location via sftp/gh-pages, with configuration information in the deploy field in package.json

    liuli deploy


    configuration description defaults
    ``type` deployment type, ``sftp/gh-pgaes` none
    dist Static resource directory None
    dest deployed remote directory none


    configuration description defaults ip address of ssh
    sshConfig.port ssh's port number 22
    sshConfig.username ssh's username


    configuration description default
    repo?: string the git address of the project to push to the default is the current project
    remote?: string push remote defaults to origin
    branch?: string remote branch name defaults to gh-pages
    add?: boolean whether to push incrementally cleans up the dest directory by default

    Example configuration for deploying a vuepress documentation site

      "deploy": {
        "type": "gh-pages",
        "dist": "docs/.vuepress/dist"

    Sync configuration

    liuli-cli sync

    You need to specify which configuration to sync in package.json

      "sync": ["prettier", "workspaces", "commitlint", "simplehooks"]

    Currently supported configuration items

    • prettier
    • commitlint
    • simplehooks
    • workspaces
    • gitignore
    • eslint-ts
    • eslint-vue-ts
    • jest

    Future goals: By default, this will include checking the cli's own sync (if it needs to be used outside of monorepo), eslint/style-lint, and interactive cli when not configured

    Note: Currently, only dependencies are synchronized and no installation is performed

    Interactive initialization of synchronized configuration is also supported

    liuli-cli sync init

    Design philosophy

    • Conventions outweigh configuration and should be left out if possible. VitePress does the same thing, see: This leads to a number of constraints, including the following
      • The entry file must be src/index.ts when packaging the library, and the exit file must be dist/index.esm.js and dist/index.js
      • The entry file must be src/bin.ts and the exit file is dist/bin.js when packaging the CLI.
      • When packaging lib, all dependencies are treated as external dependencies, while when packaging cli, all dependencies are typed into the bundle


    Why not bundle external dependencies

    The main reason is that we want to leave the bundling to the final application, to avoid bundling the same dependencies over and over again, and to avoid dealing with the problem of using worker_threads directly on the filesystem in nodejs.




    npm i @liuli-util/cli

    DownloadsWeekly Downloads






    Unpacked Size

    3.82 MB

    Total Files


    Last publish


    • rxliuli