• 使用npm link 创建本地模块


    1. npm link 介绍

    创建一个全局的符号链接,优点是方便我们进行本地node模块的开发调用,和后期发布私服,或者npm 仓库调用是一致的
    
    以下为官方的说明:
    
    First, npm link in a package folder will create a symlink in the global folder {prefix}/lib/node_modules/<package> 
    that links to the package where the npm link command was executed. (see npm-config for the value of prefix). It will
    also link any bins in the package to {prefix}/bin/{name}.
    Next, in some other location, npm link package-name will create a symbolic link from globally-installed package-name 
    to node_modules/ of the current folder.
    Note that package-name is taken from package.json, not from directory name.
     
     
    2. 简单例子
    a.创建目录
    
    mkdir  userlogin  usermodule
    
    b.初始化项目
    
    cd usermodule
    
    yarn init -y
    yarn add shortid
    touch index.js
    const shortid = require("shortid");
    module.exports={
        name:"dalong",
        age:33,
        id:shortid.generate()
    }
    package.json
    
    {
      "name": "usermodule",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "dependencies": {
        "shortid": "^2.2.8"
      }
    }
    
    cd userlogin
    yarn init -y
    touch app.js
    const usermodule =require("usermodule");
    console.log(usermodule)
    package.json
    
    {
      "name": "userlogin",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "dependencies": {
        "shortid": "^1.0.0"
      },
      "scripts": {
        "run":"node app"
      }
    }
    
    项目结构如下:
    
    ├── userlogin
    │   ├── app.js
    │   └── package.json
    └── usermodule
        ├── index.js
        ├── package.json
        └── yarn.lock
     
    3. 运行代码
    一般来说没有发布的模块我们是没法直接使用的,比如上面的代码,我们直接运行会有错误
     yarn run run
    yarn run v1.3.2
    $ node app
    module.js:538
        throw err;
        ^
    
    Error: Cannot find module 'usermodule'
        at Function.Module._resolveFilename (module.js:536:15)
        at Function.Module._load (module.js:466:25)
        at Module.require (module.js:579:17)
        at require (internal/module.js:11:18)
        at Object.<anonymous> (/Users/dalong/mylearning/nodelinkdemo/userlogin/app.js:1:81)
        at Module._compile (module.js:635:30)
        at Object.Module._extensions..js (module.js:646:10)
        at Module.load (module.js:554:32)
        at tryModuleLoad (module.js:497:12)
        at Function.Module._load (module.js:489:3)
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    具体的解决方法:
    * 发布到私有或者官方仓库
    * 使用npm link
    以下指演示使用link 的方法
    在 usermodule 的目录外边执行 npm link usermodule(此名称为package的名称,不是目录的名称)
    再次进入 userlogin 执行 yarn run run
    结果如下:
    yarn run v1.3.2
    $ node app
    { name: 'dalong', age: 33, id: 'SkZN0OjYG' }
    4. 参考资料
    https://docs.npmjs.com/cli/link
     
  • 相关阅读:
    Jquery使用live导致执行的内容会重复执行
    网上找的些tomact配置
    DatePicker 注意点 1.不用v-model 用:value 2.配合on-change进行回调 3.初始值 当天的用 (new Date()).toLocaleDateString().replace(///g, '-')
    Springboot框架 idea 工具 解决代码修改需要重新启动的方式
    合同签订
    ORACLE链接错误解决方案
    oracle中的split
    axis2和springboot冲突问题
    ActiveMQ中文乱码问题
    AXIS2的接口调用常见以及不常见问题
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/8595278.html
Copyright © 2020-2023  润新知