发布组件到npm上

代码 代码 1231 人阅读 | 0 人回复

<
将本人写的组件公布到npm上,分为两个步调:1.挨包一下本人的组件2.公布组件
挨包一下本人的组件

起首需求用webapck拆建好一个根本的框架(没有需求足脚架)

项目目次构造以下图:

145458c1ww7ll6dpcd020a.jpg

正在components中写上以.vue文件末端的vue组件

  1. <template>
  2.   <fieldset>
  3.     <legend>2021的组件</legend>
  4.     <h2>{{msg}}</h2>
  5.     <h2 class="maketime">{{time}}</h2>
  6.   </fieldset>
  7. </template>
  8. <script>
  9. export default {
  10.   name: &#39;myUI2021&#39;,
  11.   data () {
  12.     return {
  13.       msg:&#39;2021第一次启拆的组件&#39;
  14.     }
  15.   },
  16.   props:{
  17.     time:{
  18.       type:String,
  19.       default:()=>{
  20.       return &#39;创立工夫:20210901&#39;
  21.     }
  22.     }
  23.    
  24.   }
  25. }
  26. </script>
  27. <style scoped>
  28. .maketime{
  29.   color:blue;
  30. }
  31. </style>
复造代码
界说进口文件main.js

那里需求界说一个install函数,Vue.use时,会把Vue真例传出来,然后挪用传进的函数
  1. import myUI2021 from &#39;./components/myUI2021.vue&#39;
  2. const components = [
  3.     myUI2021
  4. ]
  5. const install = function (Vue) {
  6.     if (install.installed) return
  7.     // 遍历注册齐局组件
  8.     components.map(component => Vue.component(component.name, component))
  9.     if (typeof window !== &#39;undefined&#39; && window.Vue) {
  10.         install(window.Vue)
  11.     }
  12. }
  13. export default install
复造代码
正在webpack.config.js中写上根本的设置

次要是指定挨包的进口文件,挨包的出心文件,前面挨包时会基于那个设置举办挨包的
  1. const path=require(&#39;path&#39;)
  2. module.exports={
  3.     "entry":"./src/main.js",
  4.     "output":{
  5.         "path":path.resolve(__dirname,&#39;dist&#39;),
  6.         "filename":"index.js",
  7.         "publicPath":"dist/",
  8.         "library": "myUI2021",
  9.         "libraryTarget": "umd",//那里指定为随便导进导出方法,皆能够用
  10.         "umdNamedDefine": true
  11.     },
  12.     "module": {
  13.         rules: [
  14.           {
  15.             test: /\.css$/i,
  16.             use: ["style-loader", "css-loader"],
  17.           },
  18.           {
  19.             test: /\.less$/i,
  20.             loader: [
  21.               &#39;style-loader&#39;,
  22.               &#39;css-loader&#39;,
  23.               &#39;less-loader&#39;,
  24.             ],
  25.           },
  26.           {
  27.             test: /\.(png|jpg|gif|webp)$/i,
  28.             use: [
  29.               {
  30.                 loader: &#39;url-loader&#39;,
  31.                 options: {
  32.                   limit: 2800,
  33.                   name:"img/[name].[hash:8].[ext]"
  34.                 }
  35.               }
  36.             ]
  37.           },
  38.           {
  39.             test: /\.m?js$/,
  40.             exclude: /(node_modules|bower_components)/,
  41.             use: {
  42.               loader: &#39;babel-loader&#39;,
  43.               options: {
  44.                 presets: [&#39;es2015&#39;]
  45.               }
  46.             }
  47.           },
  48.           {
  49.             test:/\.vue$/,
  50.             use:["vue-loader"]
  51.           }
  52.         ],
  53.       },
  54.       "resolve":{
  55.         alias:{
  56.           &#39;vue$&#39;:&#39;vue/dist/vue.esm.js&#39;
  57.         }
  58.       }
  59. }
复造代码
package.json

那里次要是指定挨包号令,举办挨包所根据的设置文件
  1. {
  2.   "name": "meetwebpck",
  3.   "version": "1.0.0",
  4.   "description": "",
  5.   "main": "webpack.config.js",
  6.   "scripts": {
  7.     "test": "echo "Error: no test specified" && exit 1",
  8.     "build": "webpack"
  9.   },
  10.   "author": "",
  11.   "license": "ISC",
  12.   "dependencies": {
  13.     "vue": "^2.6.14"
  14.   },
  15.   "devDependencies": {
  16.     "babel-core": "^6.26.3",
  17.     "babel-loader": "^7.1.5",
  18.     "babel-preset-es2015": "^6.24.1",
  19.     "css-loader": "^2.0.1",
  20.     "file-loader": "^3.0.1",
  21.     "less": "^3.9.0",
  22.     "less-loader": "^4.1.0",
  23.     "style-loader": "^0.23.1",
  24.     "url-loader": "^1.1.2",
  25.     "vue-loader": "^13.3.0",
  26.     "vue-template-compiler": "^2.6.14",
  27.     "webpack": "^3.6.0"
  28.   }
  29. }
复造代码
好了,我们如今便挨包一下~

正在项目根目次下举办挨包,由于操纵的是根目次下的package.json
145458hfotzssuvkkqkkuw.jpg

挨包好的文件

145459li0zhkknkksna48s.jpg

公布组件到npm上

正在dist文件夹下,初初化一个package.json文件

正在挨包后的dist文件夹下,操纵npm init -y初初化一个package.json(也能够操纵根目次下的package.json文件)
指定公布到npm上的项目名,进口文件(便利导进时找到那个index.js文件),前面会操纵npm publish把dist文件夹下的一切工具皆公布到npm上
145459b7aogc74ggg4daju.jpg

登录npm

提醒一下,那里的暗码输进时是看没有睹的,没有是bug~
145459jduoodpo6l88ql4y.jpg

公布组件到npm上

需求留意一下,公布时需求把npm上的下载的源切换为本来的npm 上的
145500nv5nuqyeqtteey66.jpg

好了如许便公布胜利了~
操纵本人公布的组件

正在足脚架里下载组件

145500gfnel6p46l2ckpaw.jpg

正在main.js中引进下载的组件

我那里的足脚架里用的是vue2
145500ukqfd2v5hiiihwrk.jpg

App.vue中操纵组件

145501zhaace3jvkavzg8t.jpg

好了,到那里便完毕了,前面假设大家假设念要更新npm上本人写的组件,能够正在公布时改动一下版本号就好了。假设念要删除组件,能够正在随便处所操纵npm unpublish 组件名@版本号令就能够删除。

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则