zoukankan      html  css  js  c++  java
  • 如何在npm上发布自己的包

    npm创建自己的包

    一、一个简单的创建

    1、创建npm账号

    注意:需要进入邮箱验证

    2、创建目录及初始化

    $ mkdir zqh-test
    $ cd zqh-test
    zqh-test> npm init
    

    3、文件内容及目录结构

    注意:在生成package.json中,name的名称和项目的名称保持一至

    1. package.json
    {
      "name": "zqh-test",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "zqh-test": "echo "Error: no test specified" && exit 1"
      },
      "author": "zhangqh22",
      "license": "ISC"
    }
    
    1. 入口文件编写,index.js,加一句简单的打印
    console.info('hello world');
    
    1. 最终目录结构
    ├── zqh-test
    │   ├── index.js
    └── └── package.json
    

    4、发布

    1. 项目根目录下,运行npm addUser命令,添加自己的用户信息
    zqh-test> npm addUser
    

    如果已经注册过账号,直接登录就行了

    zqh-test> npm login
    

    输入用户名、密码、邮箱

    1. 发布
    zqh-test> npm publish
    

    发布完成后,在自己的package里,会看到对应的包

     
    图片.png

    5、下载调用

    1. 下载
    zqh-test> npm install zqh-test -D
    

    package.json

    "devDependencies": {
        "zqh-test": "^1.0.0"
    }
    
    1. 使用

    index.js

    require('zqh-test');
    
    1. 控制台执行
    zqh-test> node index.js
    

    输出:hello world

    6、删除发布的包

    zqh-test> npm --force unpublish zqh-test
    

    注意:超过24小时就不能删除了

    7、废弃包(这个包并不会删除,只是在别人下载使用的时候会提示)

    zqh-test> npm deprecate --force zqh-test@1.0.0 "这个包不在维护了。"
    

    7、更新包

    1. 先把package.json里的version版本号修改了,再执行publish命令就行了
    zqh-test> npm publish
    
    1. 更新(重新下载)
    zqh-test> npm install zqh-test -D
    

    二、require/import导入及使用说明

    1、目录结构

    ├── zqh-test2
    │   ├── index.js
    │   ├── package.json
    └── └── readme.md
    

    2、index.js(兼容AMD和CMD的写法)

    ;(function(global) {
        "use strict";
        var MyPlugin = function(opts) {
            console.log(opts);
        };
     
        MyPlugin.prototype = {
            init: function() {
                console.log('init');
            }
        };
     
        if (typeof module !== 'undefined' && module.exports) {
            module.exports = MyPlugin;
        } else if (typeof define === 'function') {
          define(function() { return MyPlugin; });
        }
        global.MyPlugin = MyPlugin;
     
    })(this);
    

    3、readme.md(插件说明)

     
    图片.png

    4、下载使用

    1. 下载
    zqh-test> npm install zqh-test2 -D
    
    1. 在index.js中引入使用
    var MyPlugin = require('zqh-test2');
    
    MyPlugin({
        name: 'MyPlugin',
        version: '1.0.1'
    });
    
    MyPlugin.prototype.init();
    

    运行命令

    zqh-test> node index.js
    

    结果:

    { name: 'MyPlugin', version: '1.0.1' }
    init
    
    1. 在vue项目main.js中,引入使用
    zqh-test> npm install zqh-test4 -D
    
    • import方式
    import MyPlugin from 'zqh-test4'
    console.log(MyPlugin('hello my plugin.'))
    
    • require方式
    let MyPlugin = require('zqh-test4');
    console.log(MyPlugin('hello plugin.'))
    

    5、加git仓库链接

    1. 添加repository
    "repository": {
      "type": "git",
      "url": "https://github.com/xxx/zqh_test2.git"
    },
    
    1. 发布后,就可以在包中查看git仓库了
     
    图片.png

    6、使用webpack打包

    需要使用webpack对组件或者模块进行打包,因为可复用库的模块化,需要适合在任何场景中进行引用,比如AMD/CMD、CommonJs、ES6、ES5等环境。从webpack打包之后的头文件来看:

    (function webpackUniversalModuleDefinition(root, factory) {
      if (typeof exports === 'object' && typeof module === 'object')
        module.exports = factory(); // node
      else if (typeof define === 'function' && define.amd)
        define([], factory);    //  AMD/CMD
      else if (typeof exports === 'object')
        exports["Url"] = factory(); 
      else
        root["Url"] = factory();
    })(this, function () {
        // somecode
    }
    

    从代码可以看出,webpack打包出来的文件是支持多场景的引用方式的。

    下面我们只需要在webpack.config.js里添加libraryTarget配置,设为umd模式

    output: {
      libraryTarget: "umd"
    }
    

    目录结构:

    ├── zqh-test4
    │   ├── build
    │   ├── ├── main.min.js
    │   ├── index.js
    │   ├── package.json
    └── └── webpack.config.js
    
    1. package.json
    {
      "name": "zqh-test4",
      "version": "1.0.4",
      "description": "",
      "main": "./build/main.min.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "zhangqh22",
      "license": "ISC",
      "devDependencies": {
        "webpack": "^3.1.0"
      }
    }
    

    main是最终引入的文件

    • 初始化安装
    zqh-test> npm install
    
    1. webpack.config.js指定umd模式
    const webpack = require('webpack')
    const path = require('path')
    
    module.exports = {
      entry: ['./index.js'],
      output: {
        path: path.resolve(__dirname, './build'),
        filename: '[name].min.js',
        libraryTarget: 'umd'
      }
    }
    
    1. index.js
    module.exports = {
      foo() {
        console.log('foo');
      },
      bar() {
        console.log('bar')
      }
    }
    

    使用webpack打包

    zqh-test> webpack
    
    1. 重新发布
    zqh-test> npm login
    zqh-test> npm publish
    
    1. 在vue项目中安装使用
    zqh-test> npm install zqh-test4 -D
    

    main.js

    import {foo} from 'zqh-test4'
    foo(); // foo
    
     
    图片.png

    参考链接:



    作者:webStyle_虎_
    链接:https://www.jianshu.com/p/f33a919443ed
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测
    基于nxp i.mx8m mini的新一代高性价比核心板之王
    Spring IoC容器-ApplicationContext
    XML文档
    Spring资源访问
    Spring框架简介
    SpringBoot整合RabbitMQ
    发布订阅模式
    主题模式
    RabbitMQ Work Queues(工作队列)
  • 原文地址:https://www.cnblogs.com/zzsdream/p/13403163.html
Copyright © 2011-2022 走看看