如何在npm上发布自己的包

如何在npm上发布自己的包

npm创建自己的包

一、一个简单的创建

1、创建npm账号
  • 官网:https://www.npmjs.com/
  • 创建账号入口:https://www.npmjs.com/signup

注意:需要进入邮箱验证

2、创建目录及初始化
$ mkdir ufrontend-test
$ cd ufrontend-test
ufrontend-test> npm init
3、文件内容及目录结构

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

  • package.json
{
  "name": "ufrontend-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "ufrontend-test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "ufrontend",
  "license": "ISC"
}
  • 入口文件编写,index.js,加一句简单的打印
console.info('hello world');
  • 最终目录结构
├── ufrontend-test
│   ├── index.js
└── └── package.json
4、发布
  • 项目根目录下,运行npm addUser命令,添加自己的用户信息
ufrontend-test> npm addUser

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

ufrontend-test> npm login

输入用户名、密码、邮箱

  • 发布
ufrontend-test> npm publish

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

5、下载调用
  • 下载
ufrontend-test> npm install ufrontend-test -D

package.json

"devDependencies": {
    "ufrontend-test": "^1.0.0"
}
  • 使用

index.js

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

输出:hello world

6、删除发布的包
ufrontend-test> npm --force unpublish ufrontend-test

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

7、废弃包(这个包并不会删除,只是在别人下载使用的时候会提示)
ufrontend-test> npm deprecate --force ufrontend-test@1.0.0 "这个包不在维护了。"
8、更新包
  • 先把package.json里的version版本号修改了,再执行publish命令就行了
ufrontend-test> npm publish
  • 更新(重新下载)
ufrontend-test> npm install ufrontend-test -D

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

1、目录结构
├── ufrontend-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(插件说明)

4、下载使用
  • 下载
ufrontend-test> npm install ufrontend-test2 -D
  • 在index.js中引入使用
var MyPlugin = require('ufrontend-test2');

MyPlugin({
    name: 'MyPlugin',
    version: '1.0.1'
});

MyPlugin.prototype.init();

运行命令

ufrontend-test> node index.js

结果:

{ name: 'MyPlugin', version: '1.0.1' }
init
  • 在vue项目main.js中,引入使用
ufrontend-test> npm install ufrontend-test4 -D
  • import方式
import MyPlugin from 'ufrontend-test4'
console.log(MyPlugin('hello my plugin.'))
  • require方式
let MyPlugin = require('ufrontend-test4');
console.log(MyPlugin('hello plugin.'))
5、加git仓库链接
  • 添加repository
"repository": {
  "type": "git",
  "url": "https://github.com/xxx/ufrontend_test2.git"
},
  • 发布后,就可以在包中查看git仓库了

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"
}

目录结构:

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

main是最终引入的文件

  • 初始化安装
ufrontend-test> npm install
  • 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'
  }
}
  • index.js
module.exports = {
  foo() {
    console.log('foo');
  },
  bar() {
    console.log('bar')
  }
}

使用webpack打包

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

main.js

import {foo} from 'ufrontend-test4'
foo(); // foo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683498.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

演讲全文|林涛:MongoDB助力智能制造出海控本增效

5月29日-30日在上海世博中心举办的亚马逊云科技中国峰会圆满结束。本文整理了MongoDB北亚区方案与咨询总监林涛在白金讲堂的演讲全文,就《MongoDB助力智能制造出海控本增效》话题与大家共同探讨。 白金讲堂演讲视频 从全球经济竞争的角度看,中国制造业…

【Python】认识 Python

一、计算机基础概念 1、什么是计算机 很多老一辈的人,管下面这个叫做计算机。然而,它只是 “计算器”,和计算机是有很大区别的。 现在我们所说的计算机,不光能进行算术运算,还能进行逻辑判断、数据存储、网络通信等…

【Vue】路由介绍

一、引入 思考 单页面应用程序,之所以开发效率高,性能好,用户体验好 最大的原因就是:页面按需更新 比如当点击【发现音乐】和【关注】时,只是更新下面部分内容,对于头部是不更新的 要按需更新&#xff…

Nginx 功能简介及代理配置

一、Nginx功能简介 Nginx是一款开源的高性能HTTP和反向代理服务器,具有轻量级的设计、高并发能力、内存占用低以及配置简单等特点,并且支持热部署。以下是Nginx的主要功能: 静态内容服务:Nginx可以作为一个高性能的静态文件服务…

QML应用添加网络代理

在QML应用中我们可以通过QNetworkProxy和QNetworkAccessManager类给应用添加网络代理。QNetworkProxy是Qt网络模块中的一个类,用于配置网络请求的代理服务器。通过使用代理服务器,我们可以控制应用程序的网络流量,实现网络请求的转发、监视、和过滤等功能。代理服务器在很多…

【Python】 Python应用的最佳项目结构解析

基本原理 在Python开发中,一个清晰且结构化良好的项目布局对于项目的可维护性、可扩展性和团队协作至关重要。项目结构不仅影响代码的组织方式,还影响到开发流程和部署策略。一个优秀的项目结构应该能够方便地进行模块化开发,易于理解&#…

keil下载及安装(社区版本)

知不足而奋进 望远山而前行 目录 文章目录 前言 Keil有官方版本和社区版本,此文章为社区版本安装,仅供参考。 1.keil MDK 2.keil社区版介绍 3.keil下载 (1)打开进入登录界面 (2)点击下载,跳转到信息页面 (3)填写个人信息,点击提交 (4)点击下载…

巨详细Linux卸载Redis教程

巨详细Linux卸载Redis教程 1、检查系统残留redis数据2、卸载系统残留redis数据 1、检查系统残留redis数据 redis等数据相关中间件安装前一定要进行残留数据检查,排除后期存在的各种隐患。 #检查有没有残留客户端 whereis redis-cli #检查有没有残留服务 whereis r…

上位机图像处理和嵌入式模块部署(f407 mcu中的spi总线操作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习mcu,一般都是模板和模块之间的接口,比如说串口、usb、eth这种。还有一种接口,更多的是芯片和芯片之…

【Python】 深入理解Pandas中的iloc和loc:数据选择的艺术

基本原理 在Python的Pandas库中,数据选择是数据分析和处理的基础。iloc和loc是两种常用的数据选择方法,它们都允许用户根据索引位置或标签来选择数据。然而,它们在行为和用途上存在一些关键的差异。 iloc iloc是基于整数索引的&#xff0c…

【Modelground】个人AI产品MVP迭代平台(3)——工程化架构设计

文章目录 背景monorepo多项目调试/打包公共静态资源服务公共模型拷贝入项目的public文件夹总结 背景 Modelground中的项目,基本都依赖Mediapipe模型,因此,有很强的需要对Mediapipe进行封装,其余项目都调用这个封装库。从架构上&a…

IIS漏洞

IIS7.5解析漏洞 安装IIS7.5 安装完成之后直接访问浏览器: 安装phpstudy for IIS 安装这个的目的是方便,不用自己去配置 解压开傻瓜式安装即可。然后查看探针: 漏洞原理 IIS7/7.5在Fast-CGI运行模式下,在一个文件路径(/shell.jpg)后面加上/…

linux线程的同步与互斥

前面我们讲了线程的概念以及如何创建与控制线程,接下来我们来对线程的细节与线程之间的问题进行一些讲解; 1.线程的互斥 互斥就是相互排斥,我们可以理解为对立竞争不相容;线程的互斥则是线程之间在对于临界资源竞争时相互排斥的…

openh264 编码命令行工具源码分析

openh264 OpenH264 是由 Cisco 公司发布的一个开源的 H.264 编码和解码器。它提供了命令行工具,可以用于对视频进行编码和解码操作。 使用说明 openh264 编码命令行工具可以使用命令行或 config 配置进行编码操作。编译和使用方法具体可以参考 Windows11编译open…

12_JavaWebAjax

文章目录 Ajax1. 同步请求异步请求2. Ajax实现方式3. 日程管理第四期4. 响应JSON串4.1 响应JSON串格式的一般格式 Appendix Ajax 发送请求的一些方式 1.输入浏览器回车 2.html>head>script/link ​ img标签 3.a标签form表单标签等 用户手动控制提交产生&#xff1b…

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后,您将能够: • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中,将要求您连接网络设备并配置主机实现基本的网络…

R语言探索与分析20-北京市气温预测分析

一、序言 近年来,人类大量燃烧煤炭、天然气等含碳燃料导致温室气 体过度排放,大量温室气体强烈吸收地面辐射中的红外线,造 成温室效应不断累积,使得地球温度上升,造成全球气候变暖。气象温度的预测一直以来都是天气预…

计算机毕业设计 | 基于node(Koa)+vue 高校宿舍管理系统 宿舍可视化(附源码)

1,绪论 1.1 项目背景 随着科技的发展,智能化管理越来越重要。大学生在宿舍的时间超过了1/3,因此良好的宿舍管理对学生的生活和学习极为关键。学生宿舍管理系统能够合理安排新生分配宿舍,不浪费公共资源,减轻学校管理…

微信扫普通二维码后通过小程序观看的实现

为了方便小程序开发者更便捷地推广小程序,兼容线下已有的二维码,微信公众平台开放扫描普通链接二维码跳转小程序能力。 功能介绍 普通链接二维码,是指开发者使用工具对网页链接进行编码后生成的二维码。 线下商户可不需更换线下二维码&…

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法 1、count(*)2、count(1)3、count(column) 💖The Begin💖点点关注,收藏不迷路💖 在SQL中&a…