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>
参考