Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yurireeis/6263afec1423fd1fa36e268bd028a7cc to your computer and use it in GitHub Desktop.
Save yurireeis/6263afec1423fd1fa36e268bd028a7cc to your computer and use it in GitHub Desktop.

Revisions

  1. @mritzco mritzco revised this gist Aug 8, 2019. 1 changed file with 9 additions and 9 deletions.
    18 changes: 9 additions & 9 deletions How to create Node cli executable from npm.md
    Original file line number Diff line number Diff line change
    @@ -13,13 +13,13 @@ Create a standard module **ignore command line parsing**
    ### Paths
    If your module is split in multiple files make sure to use full paths to include them.
    For example:
    ```
    Files at lib:
    ```js
    /* Files at lib:
    - a.js
    - b.js
    in a:
    In a.js:
    */
    const b = require('b'); // Won't work
    const b = require('./b'); // Works
    ```
    @@ -37,7 +37,7 @@ Create another entry point, a node file. Add in here:
    ## 1.2 Modify your package.json

    We'll add a line so npm knows it has to copy the cli.js into .bin
    ```
    ```json
    "bin": {
    "name_of_your_app": "./cli.js"
    }
    @@ -47,7 +47,7 @@ We'll add a line so npm knows it has to copy the cli.js into .bin
    ## 1.3 Publish

    Check a guide on publishing to npm, when you're ready:
    ```
    ```sh
    npm publish
    ```
    Now your package is readily available to be used anywhere.
    @@ -58,19 +58,19 @@ Say you build a parser, a file processor or any other cool thing. Now you want a

    ## 2.1 Install as any other NPM module

    ```
    ```sh
    npm install your-package --save-dev
    ```

    ## 2.2 Using it as a script
    Open your package.json
    ```
    ```json
    "scripts": {
    "name_to_call": "your_module_name param1 param2 param3"
    },
    ```
    ## 2.3 Run it
    ```
    ```sh
    npm run name_to_call
    ```

  2. @mritzco mritzco revised this gist Aug 8, 2019. 1 changed file with 14 additions and 0 deletions.
    14 changes: 14 additions & 0 deletions How to create Node cli executable from npm.md
    Original file line number Diff line number Diff line change
    @@ -10,6 +10,20 @@ The place where you use it: Application
    Create a standard module **ignore command line parsing**
    *Your entry point index.html should be callable using require()*

    ### Paths
    If your module is split in multiple files make sure to use full paths to include them.
    For example:
    ```
    Files at lib:
    - a.js
    - b.js
    in a:
    const b = require('b'); // Won't work
    const b = require('./b'); // Works
    ```

    ## 1.1 Create a command line entry point

    Create another entry point, a node file. Add in here:
  3. @mritzco mritzco renamed this gist Aug 8, 2019. 1 changed file with 0 additions and 0 deletions.
  4. @mritzco mritzco created this gist Aug 8, 2019.
    66 changes: 66 additions & 0 deletions Instruction.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    # Creating an executable NPM package and using it

    This short guide explains how to create an NPM package that can be called as a script from another project.
    For clarity:
    The package to execute will be called: Module
    The place where you use it: Application

    # 1. Build your module

    Create a standard module **ignore command line parsing**
    *Your entry point index.html should be callable using require()*

    ## 1.1 Create a command line entry point

    Create another entry point, a node file. Add in here:
    *for example: cli.js*
    - First line must be: #!/usr/bin/env node
    - Command line parsing
    - Help
    - Validation
    - Require your index.js (or main entry point) and run it

    ## 1.2 Modify your package.json

    We'll add a line so npm knows it has to copy the cli.js into .bin
    ```
    "bin": {
    "name_of_your_app": "./cli.js"
    }
    //or
    "bin": "./cli.js"
    ```
    ## 1.3 Publish

    Check a guide on publishing to npm, when you're ready:
    ```
    npm publish
    ```
    Now your package is readily available to be used anywhere.

    # 2. Use your module as script in another application

    Say you build a parser, a file processor or any other cool thing. Now you want a new node application to use it when building.

    ## 2.1 Install as any other NPM module

    ```
    npm install your-package --save-dev
    ```

    ## 2.2 Using it as a script
    Open your package.json
    ```
    "scripts": {
    "name_to_call": "your_module_name param1 param2 param3"
    },
    ```
    ## 2.3 Run it
    ```
    npm run name_to_call
    ```

    And that's it! Enjoy

    ## References
    - https://docs.npmjs.com/files/package.json
    27 changes: 27 additions & 0 deletions cli.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    #!/usr/bin/env node

    //module/cli.js

    const fs = require("fs"),
    path = require("path")

    /** Parse the command line */
    var args = process.argv.slice(2);

    // Validate input
    if (args.length !== 2) {
    console.log("Warning: Requires 2 arguments");
    console.log("node index.js [path/source.html] [targetfile]");
    process.exit();
    }

    const src = args[0];
    const target = args[1];
    const dirsrc = path.dirname(src);

    if (!fs.existsSync(src)) {
    console.log("Error: Source file doesn't exist. Given: ", src);
    process.exit();
    }

    require('./index.js')({src, target, dirsrc});
    2 changes: 2 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2 @@
    //module/index.js
    module.exports = require('main');