zoukankan      html  css  js  c++  java
  • npm link 安装本地模块,将本地模块cli化

    第三方学习地址

    http://mp.weixin.qq.com/s?__biz=MzAxMTU0NTc4Nw==&mid=2661157390&idx=1&sn=6d96e54f1c4ecd5201a03fe76cc5f5a9&chksm=80d5d7dab7a25ecc5d1c47e81b32a4c88e8d70b1fcfd849777ca9605d8326339dff9e29e6e37&mpshare=1&scene=23&srcid=1218i1tXLnRQfPHvJmqSyRHR#rd

    1)初始化模块

    确认模块名称

    $ npm info xxx

    如果没有找到对应的包,说明你可以使用这个名字,然后在github建立仓库,clone到本地即可

    $ npm init -y

    2)cli二进制模块

    Node.js分2种模块

    • 普通模块,供代码调用

    • 二进制模块,提供cli调用

    大家都知道,生成器是cli工具,所以我们应该使用cli二进制模块

    手动修改package.json文件,增加 bin 配置

    {
      "name": "a",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "bin": {
        "gen": "gen.js"
      },
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }

    这里主要增加里一个bin的配置,bin里的gen为cli的具体命令,它的具体执行的文件gen.js,大家看到这是一个plain old object类型,所以可以配置多个命令的,各位可以按照自己的喜好来。

    既然gen的执行文件是gen.js,我们当然需要创建创建它

    $ touch gen.js

     如果是windwo 也可以选择这样写:#! E: odejs ode

      #!/usr/bin/env node
    
      var argv = process.argv;
      var filePath = __dirname;
      var currentPath = process.cwd();
    
      console.log(argv)
      console.log(filePath)
      console.log(currentPath)

    说明

    • argv是命令行的参数

    • filePath是当前文件的路径,也就是以后安装后文件的路径,用于存放模板文件非常好

    • currentPath是当前shell上下文路径,也就是生成器要生成文件的目标位置

    至此,二进制模块的代码就写完了,下面我们测一下

    1)本地安装此模块

    在package.json文件路径下,执行

    $ npm link

    /Users/sang/.nvm/versions/node/v4.4.5/bin/gen -> /Users/sang/.nvm/versions/node/v4.4.5/lib/node_modules/a/gen.js/Users/sang/.nvm/versions/node/v4.4.5/lib/node_modules/a -> /Users/sang/workspace/github/i5ting/a

    此时说明已经安装成功了。

    2)执行gen测试

    $ gen

    [ '/Users/sang/.nvm/versions/node/v4.4.5/bin/node',  '/Users/sang/.nvm/versions/node/v4.4.5/bin/gen' ]/Users/sang/workspace/github/i5ting/a/Users/sang/workspace/github/i5ting/a

    可以换不同的目录来测试一下,看看结果的不同,来体会上面3个变量的妙用。

  • 相关阅读:
    codeforce 272B Dima and Sequence
    Codeforce 270D Greenhouse Effect
    codeforce 270C Magical Boxes
    codeforce 270B Multithreading
    图论--Dijkstra算法总结
    图论--(技巧)超级源点与超级汇点
    图论--Floyd总结
    ZOJ 3932 Handshakes
    ZOJ 3932 Deque and Balls
    ZOJ 3927 Programming Ability Test
  • 原文地址:https://www.cnblogs.com/CyLee/p/6195022.html
Copyright © 2011-2022 走看看