JS:NPM发布一个Vue组件UI库并使用CDN引入使用

简介: JS:NPM发布一个Vue组件UI库并使用CDN引入使用

NPM CDN : https://www.jsdelivr.com/

一、发布一个Vue组件

1、使用webpack-simple 模板项目初始化

vue init webpack-simple moment-ui
cd moment-ui
cnpm i

2、新建组件

将新建的组件放在plugin文件夹中

src/plugin/Button.vue

<template>
  <div>Button</div>
</template>
<script>
export default {
  name: "MoButton",
};
</script>
<style lang="scss" scoped>
</style>

3、注册组件

src/plugin/index.js

import Button from "./Button.vue";
const components = [Button];
// 注册组件
const install = function (Vue, options) {
  components.forEach((component) => {
    Vue.component(component.name, component);
  });
};
/* 支持使用标签的方式引入 Vue是全局变量时,自动install */
if (typeof window !== "undefined" && window.Vue) {
  install(window.Vue);
}
export default {
  install,
  ...components,
};

4、修改配置项

webpack.config.js

module.exports = {
  // 根据不同的执行环境配置不同的入口
  entry:
    process.env.NODE_ENV == "development"
      ? "./src/main.js"
      : "./src/plugin/index.js",
  output: {
    path: path.resolve(__dirname, "./dist"),
    publicPath: "/dist/",
    filename: "moment-ui.js",
    library: 'moment-ui', // 指定的就是你使用require时的模块名
    // CMD只能在 Node 环境执行,AMD 只能在浏览器端执行,UMD 同时支持两种执行环境
    libraryTarget: 'umd', // 指定输出格式
    umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
  },
  // 此处省略其他默认配置
}


5、修改package.json


// 设置为公开包

"private": false,


// 检索路径

"main": "dist/moment-ui.js",



6、发布到npm


如果没有账号注册 https://www.npmjs.com/


# 登录

npm login


# 发布

npm publish



主页:https://www.npmjs.com/package/moment-ui


二、使用示例

1、CDN方式使用

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/moment-ui@1.0.2/dist/moment-ui.js"></script>
  </head>
  <body>
    <div id="app">
      <mo-button></mo-button>
    </div>
    <script>
      new Vue({
        el: "#app",
      });
    </script>
  </body>
</html>

2、Vue项目中使用

# 创建测试项目
vue init webpack-simple vue-demo-test
cd vue-demo-test
cnpm -i
# 下载测试, 淘宝等镜像可能没有及时同步,使用npm地址
npm install moment-ui --save

src/main.js

// src/main.js
import Vue from 'vue'
import MomentUI from 'moment-ui'
import App from './App.vue'
// 注册
Vue.use(MomentUI)
new Vue({
  el: '#app',
  render: h => h(App)
})

src/App.vue

<template>
  <div id="app">
    <mo-button />
  </div>
</template>
<script>
export default {
  name: "app",
};
</script>
<style>
</style>

参考

vue组件篇(2)—封装组件并发布到npm

相关文章
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
2100 103
|
JavaScript 前端开发 API
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
843 24
|
JavaScript 前端开发 API
如何在React.js中使用Shadcn/UI
学习如何在React.js中使用Shadcn/UI构建轻量且可定制的现代化界面。Shadcn/UI为React.js打造,提供核心组件和Tailwind CSS支持,帮助你创建独特的UI,避免大型框架的臃肿。本文介绍安装、配置及与Apipost集成的方法,适合希望提升React.js项目的开发者。通过定制主题和优化性能,你可以高效地开发出功能强大的应用。
1303 59
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
889 156
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
617 156
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
1065 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
549 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
674 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
485 58

推荐镜像

更多
  • NPM