如何发布自己的npm包

这篇具有很好参考价值的文章主要介绍了如何发布自己的npm包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

发布一个简单的npm包

  1. 首先创建一个文件夹(唯一的命名)
  2. 创建package.json包,输出npm init,一直回车就好。
  3. 创建index.js文件,向外暴露方法。

如何发布自己的npm包,npm,前端,node.js

将包上传或更新到 npm 

执行登录命令:npm login
登录npm官网,根据提示输入用户名和密码,邮箱(邮箱必须在注册时进行验证)

 发布版本,在登陆命令后接着输入如下命令

npm publish

如何发布自己的npm包,npm,前端,node.js

 发布上传后,你可以去 npm 官网上查一下自己的包有没有存在。

 如何发布自己的npm包,npm,前端,node.js

 在项目中安装你的包

npm i xxx -s,在main.js中引用

 如何发布自己的npm包,npm,前端,node.js

 在vue项目任何页面使用

如何发布自己的npm包,npm,前端,node.js

 发布一个自己组件包

1、在项目中添加组件库文件夹:

在根目录下新建一个plugins文件夹,用来放组件,项目文件结构为:
 (我的是跟src平级 创建plugins组件文件夹)

如何发布自己的npm包,npm,前端,node.js

 2、添加配置文件

项目根目录下面添加vue.config.js文件,写入以下内容:(主要是配置webpack的打包)

如何发布自己的npm包,npm,前端,node.js

 3、编写组件

如何发布自己的npm包,npm,前端,node.js

把封装的组件、封装的指令和封装的过滤器每个都写在分类文件夹中,后面在合理添加并继续封装。下面我以datetime这个组件为例:(是一个时间显示组件)

建组件date-time.vue和单独暴露组件的index.js文件:

 date-time.vue内容如下:

<template>
  <div class="date-time" :style="{ 'font-size': `${useStyleObj.fontSize}px` }">
    <p :style="styleObject">{{ nowDate }}</p>
    <p :style="styleObject">{{ nowTime }}</p>
  </div>
</template>
<script>
export default {
  name: "dateTime",
  props: {
    styleObj: {//客户端传递的样式
      type: Object,
      default: () => ({
        fontSize: 25,
        color: ["#dcedff", "#5ca9ff"]
      })
    }
  },
  computed: {
    useStyleObj() {//用computed是为了暴露客户端的styleObj样式属性值可以选填,更加灵活
      let size = 25;
      let color = ["#dcedff", "#5ca9ff"];
      if (this.styleObj.fontSize) {
        size = this.styleObj.fontSize;
      }
      if (this.styleObj.color) {
        color = this.styleObj.color;
      }
      return {
        fontSize: size,
        color: color
      };
    },
    styleObject() {//根据客户端传递的样式值配置文字的渐变色
      return {
        background: `linear-gradient(180deg,${this.useStyleObj["color"][0]},
        ${
          this.useStyleObj.color.length > 1
            ? this.useStyleObj["color"][1]
            : this.useStyleObj["color"][0]
        })`,
        "-webkit-background-clip": "text"
      };
    }
  },
  data() {
    return {
      timer: null,
      nowWeek: "",
      nowDate: "",
      nowTime: ""
      //   styleBox: {}
    };
  },
  created() {
    this.timer = setInterval(() => {
      this.setNowTimes();
    }, 1000); //时间
  },
  beforeDestroy: function() {
    if (this.timer) {
      clearInterval(this.timer);
    }
  },
  methods: {
    setNowTimes() {//时间拼接方法
      const myDate = new Date();
      const wk = myDate.getDay();
      const yy = String(myDate.getFullYear());
      const mm = myDate.getMonth() + 1;
      const dd = String(
        myDate.getDate() < 10 ? `0${myDate.getDate()}` : myDate.getDate()
      );
      const hou = String(
        myDate.getHours() < 10 ? `0${myDate.getHours()}` : myDate.getHours()
      );
      const min = String(
        myDate.getMinutes() < 10
          ? `0${myDate.getMinutes()}`
          : myDate.getMinutes()
      );
      const sec = String(
        myDate.getSeconds() < 10
          ? `0${myDate.getSeconds()}`
          : myDate.getSeconds()
      );
      const weeks = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
      const week = weeks[wk];
      this.nowDate = `${yy}/${mm}/${dd} ${week}`;
      this.nowTime = `${hou}:${min}:${sec}`;
      this.nowWeek = week;
    }
  }
};
//样式文件
</script>
<style lang="scss" scoped></style>

index.js文件内容:为组件提供 install 方法,供组件对外按需引入

import dateTimes from "./date-time.vue";

dateTimes.install = Vue => Vue.component(dateTimes.name, dateTimes); //注册组件

export default dateTimes;

这个单独暴露组件的 index.js,意思是如果这个工程值封装一个组件使用的话,就用这个index.js 文件暴露 install 即可了。 

plugins 文件夹下面新建一个 index.js 文件,为了统一导出所有组件及暴露 install 方法。之前的 index.js 只是安装单个组件,而现在这个 index.js 是循环安装所有组件、所有指令、过滤器统一暴露出去,可以按需引用组件,此时plugins文件夹的内容为:
如何发布自己的npm包,npm,前端,node.js

 我这里是统一暴露组件、指令、过滤器:

//组件
import DateTime from "./components/dateTime/date-time.vue"

//所有组件列表
const components = [DateTime]


//定义install方法,Vue作为参数
const install = Vue => {
  //判断是否安装,安装过就不用继续执行
  if (install.installed) return
  install.installed = true
  //遍历注册所有组件
  components.map(component => Vue.component(component.name, component))
}

//检测到Vue再执行
if (typeof window !== "undefined" && window.Vue) {
  install(window.Vue);
}
export default {
  install,
  //所有组件,必须具有install方法才能使用Vue.use()
  ...components
}

4、在本地页面中使用组件

在main.js中引入

如何发布自己的npm包,npm,前端,node.js

 在页面中不用引入使用使用组件,因为是全局注册了组件库,所以可以直接使用标签,这个标签与组件文件中的date-time.vue里的name保持一致,只不过一个是驼峰式写法,一个是标签名称。

 如何发布自己的npm包,npm,前端,node.js

 如何发布自己的npm包,npm,前端,node.js

 测试可以全局使用组件,说明封装的组件没有问题,下面可以打包了。

5、打包

在package.json文件中的"scripts"字段里添加以下内容:

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lib": "vue-cli-service build --target lib --name 包名 -dest lib plugins/index.js",
    "lint": "vue-cli-service lint"
  },

因为在vue-cli中,可以通过以下命令将一个单独的入口打包成库

// target: 默认为构建应用,改为 lib 即可启用构建库模式
// name: 输出文件名
// dest: 输出目录,默认为 dist,这里我们改为 lib
// entry: 入口文件路径
vue-cli-service build --target lib --name lib [entry]

 package.json中配置打包信息:

如何发布自己的npm包,npm,前端,node.js

  • .gitignore文件中添加:
  • 把包的一些测试文件过滤掉,最终打包只留下直接封装的文件,即plugins中封装的暴露组件

 如何发布自己的npm包,npm,前端,node.js

 在终端执行npm run lib 即可,执行结果:

 如何发布自己的npm包,npm,前端,node.js

 6、发布包

如何发布自己的npm包,npm,前端,node.js

 7、使用包

npm i xgs_common -s
在项目文件mainjs中引入。

如何发布自己的npm包,npm,前端,node.js

在项目中直接使用组件中的name即可
例如:<date-time/>文章来源地址https://www.toymoban.com/news/detail-625966.html

到了这里,关于如何发布自己的npm包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端笔记10——Win7下node.js和npm版本兼容性问题解决。

    新版本node.js不支持WIN7。 Win7的电脑只能支持到Node v13.14.0。 可能之前装了新版本的node,删了重装后,导致运行npm命令老是提醒信息,说是不支持node版本。 npm does not support Node.js v13.14.0 可是显示版本正常 解决方法: 卸载node之后,在把npm和npm cache两个文件夹删掉。 删干净后再

    2024年02月15日
    浏览(41)
  • 如何升级npm 和 安装nvm 及 升级node.js

    1.NPM如何升级?   1.1.可以使用NPM自带的命令进行升级:  注:这个命令会安装最新的,安装到全局。 2.查看NPM版本   注:要是版本过低,可使用上面所说命令进行升级。 3.怎么把node.js升级到最新版?  3.1.这里使用nvm,nvm是node.js版本管理的工具。  3.2.要是没有nvm,按如下步

    2024年02月07日
    浏览(34)
  • VScode运行npm错误解决:如何安装与配置Node.js环境

    在VScode中遇到npm无法识别的错误时,可能是因为未安装Node.js或环境变量配置不正确。

    2024年02月06日
    浏览(56)
  • 如何使用vite框架封装一个js库,并发布npm包

    目录 前言介绍 一、创建一个vite项目 1、使用创建命令:  2、选择others 3、 模板选择library 4、选择开发语言 ​编辑 二、安装依赖 三、目录介绍 1、vite.config.ts打包文件 2、package.json命令配置文件 三、发布npm 1、注册npm账号 2、设置npm源 3、登录到npm 4、推送到npm仓库 5、查看

    2024年01月25日
    浏览(35)
  • 【node.js】关于node.js,如何解决npm should be run outside of the Node.js REPL, in your normal shell报错?

    前言,安装node方式采用的是安装包解压的 报如下错误: npm should be run outside of the Node.js REPL, in your normal shell 在windows环境下安装完node,其目录结构下会有一个node.exe文件,运行该工具就相当于在cmd中执行node命令,即进入node开发模式。 产生这个错误的原因是你将npm命令运行在

    2024年02月03日
    浏览(36)
  • 发布自己的npm包

    输入npm init后,一路默认即可初始化成功,如下: 初始化成功后会生成一个package.json文件 n(以我的文件夹demo-npm-dir为例) package.json配置如下: 然后在index.js写即可。 这里我设置发布到npm公有平台,根据个人项目需要配置。 注:检测npm源命令 没有请先在官网注册,登录时会

    2024年02月10日
    浏览(43)
  • 发布自己的npm 包

    没有账号先注册一个,注册地址https://www.npmjs.com 之后npm 网站搜索包名就可以看到了

    2024年02月15日
    浏览(33)
  • 发布属于自己的 npm 包

    注意:输入密码的时候 不会显示出来,输入完整直接按回车即可

    2024年02月13日
    浏览(28)
  • 作为前端leader,如何搭建属于我们公司自己的流水线自动化部署系统(node+express)

    背景:自动化部署系统主要可以集成到公司内部的管理系统中去,比如公司有多个项目,移动端H5,大屏网站,门户网站等...每次发布或者迭代都需要前端同事打包然后在交给运维或者后端同事放到服务器上进行部署 ,如果有一个项目多个同事合作完成 还要走git合并流程,

    2024年02月19日
    浏览(37)
  • 如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

    遇到问题:用npm下载组件时出现 Cannot find module ‘D:softwarenode_modulesnpmbinnpm-cli.js’ 问题,导致下载组件不能完成。 解决方法:下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题: 我们找到提示路径去看发现,在node_modules下没有npm目录 可以看到,存

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包