一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - 編程技術(shù) - npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題(這里以發(fā)布vue插件為例)

npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題(這里以發(fā)布vue插件為例)

2021-02-23 22:35前端歷劫之路maomin9761 編程技術(shù)

本篇給大家介紹npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題,希望能夠幫助到你!

npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題(這里以發(fā)布vue插件為例)

前言

在此之前,你需要去npm官網(wǎng)注冊(cè)一個(gè)屬于自己的賬號(hào),記住自己的賬戶名以及密碼、郵箱,后面會(huì)用的到。

第一步,安裝webpack簡(jiǎn)易框架

  1. vue init webpack-simple marquee 

 npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題(這里以發(fā)布vue插件為例)

第二步,封裝Vue插件

1、安裝完成后,會(huì)出現(xiàn)以下目錄即可成功

  1. marquee/ 
  2. ├── index.html 
  3. ├── package.json 
  4. ├── README.md 
  5. ├── .babelrc 
  6. ├── .editorconfig 
  7. ├── .gitignore 
  8. ├── src 
  9. │   ├── App.vue 
  10. │   ├── assets 
  11. │   │   └── logo.png 
  12. │   └── main.js 
  13. └── webpack.config.js 

2、接下來(lái),我們?cè)趕rc文件夾下創(chuàng)建一個(gè)名叫marquee的文件夾,在文件夾里面創(chuàng)建marquee.vue和index.js

  1. marquee/ 
  2. ├── index.html 
  3. ├── package.json 
  4. ├── README.md 
  5. ├── .babelrc 
  6. ├── .editorconfig 
  7. ├── .gitignore 
  8. ├── src 
  9. │   ├── App.vue 
  10. │   ├── marquee 
  11. │   │   └── marquee.vue 
  12. │   │   └── index.js 
  13. │   ├── assets 
  14. │   │   └── logo.png 
  15. │   └── main.js 
  16. └── webpack.config.js 

3、開(kāi)始在marquee.vue封裝Vue插件了

  1. <template> 
  2.   <div class="marquee-wrap"
  3.     <!-- 滾動(dòng)內(nèi)容 --> 
  4.     <div class="scroll"
  5.       <p class="marquee">{{text}}</p> 
  6.       <!-- 文字副本 --> 
  7.       <p class="copy"></p> 
  8.     </div> 
  9.     <!-- 為了計(jì)算總文本寬度,通過(guò)css在頁(yè)面中隱藏 --> 
  10.     <p class="getWidth">{{text}}</p> 
  11.   </div> 
  12. </template> 
  13.  
  14. <script> 
  15. export default { 
  16.   name'marquee'
  17.   props: ['val'], 
  18.   data () { 
  19.     return { 
  20.       timer: null
  21.       text: '' 
  22.     } 
  23.   }, 
  24.   created () { 
  25.     let timer = setTimeout(() => { 
  26.       this.move() 
  27.       clearTimeout(timer) 
  28.     }, 1000) 
  29.   }, 
  30.   // 把父組件傳入的arr轉(zhuǎn)化成字符串 
  31.   mounted () { 
  32.     for (let item of this.val) { 
  33.       this.text += ' ' + item 
  34.     } 
  35.   }, 
  36.   methods: { 
  37.     move () { 
  38.       let maxWidth = document.querySelector('.marquee-wrap').clientWidth 
  39.       // 獲取文字text 的計(jì)算后寬度 (由于overflow的存在,直接獲取不到,需要獨(dú)立的node計(jì)算) 
  40.       let width = document.querySelector('.getWidth').scrollWidth 
  41.       // 如果文本內(nèi)容的寬度小于頁(yè)面寬度,則表示文字小于等于一行,則不需要滾動(dòng) 
  42.       if (width <= maxWidth) return 
  43.       let scroll = document.querySelector('.scroll'
  44.       let copy = document.querySelector('.copy'
  45.       copy.innerText = this.text // 文字副本填充 
  46.       let distance = 0 // 位移距離 
  47.       // 設(shè)置位移 
  48.       this.timer = setInterval(() => { 
  49.         distance -= 1 
  50.         // 如果位移超過(guò)文字寬度,則回到起點(diǎn) 
  51.         if (-distance >= width) { 
  52.           distance = 16 // 距離必須與marquee的margin寬度相同 
  53.         } 
  54.         scroll.style.transform = 'translateX(' + distance + 'px)' 
  55.       }, 20) 
  56.     } 
  57.   }, 
  58.   beforeDestroy () { 
  59.     // 清除計(jì)時(shí)器 
  60.     clearInterval(this.timer) 
  61.   } 
  62. </script> 
  63.  
  64. <style scoped> 
  65.   .marquee-wrap { 
  66.     width: 100%; 
  67.     overflow: hidden; 
  68.     position: relative
  69.   } 
  70.   .marquee{ 
  71.     margin-right: 16px; 
  72.   } 
  73.   p { 
  74.     word-break:keep-all
  75.     white-space: nowrap; 
  76.     font-size: 16px; 
  77.     font-family: "微軟雅黑 Light"
  78.   } 
  79.   .scroll { 
  80.     display: flex; 
  81.   } 
  82.   .getWidth { 
  83.     word-break:keep-all
  84.     white-space:nowrap; 
  85.     position: absolute
  86.     opacity: 0; 
  87.     top: 0; 
  88.   } 
  89. </style> 

 4、為了方便查看效果,可以在App.vue先引入組件查看效果

  1. <template> 
  2.   <div id="app"
  3.        <Marquee :val="msg"></Marquee> 
  4.   </div> 
  5. </template> 
  6.  
  7. <script> 
  8. import Marquee from '../src/marquee/marquee.vue'
  9. export default { 
  10.   name'app'
  11.   data () { 
  12.     return { 
  13.       msg: '啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊' 
  14.     } 
  15.   }, 
  16.   components:{ 
  17.     Marquee 
  18.   } 
  19. </script> 
  20.  
  21. <style> 
  22. #app { 
  23.   font-family: 'Avenir', Helvetica, Arial, sans-serif; 
  24.   -webkit-font-smoothing: antialiased; 
  25.   -moz-osx-font-smoothing: grayscale; 
  26.   text-align: center; 
  27.   color: #2c3e50; 
  28.   margin-top: 60px; 
  29.  
  30. h1, h2 { 
  31.   font-weight: normal; 
  32.  
  33. ul { 
  34.   list-style-type: none; 
  35.   padding: 0; 
  36.  
  37. li { 
  38.   display: inline-block; 
  39.   margin: 0 10px; 
  40.  
  41. a { 
  42.   color: #42b983; 
  43. </style> 

5、啟動(dòng)命令,查看效果

  1. npm install 
  2. npm run dev 

第三步,發(fā)布Vue插件前配置

1、編輯marquee文件夾下的index.js

  1. marquee/ 
  2. ├── index.html 
  3. ├── package.json 
  4. ├── README.md 
  5. ├── .babelrc 
  6. ├── .editorconfig 
  7. ├── .gitignore 
  8. ├── src 
  9. │   ├── App.vue 
  10. │   ├── marquee 
  11. │   │   └── marquee.vue 
  12. │   │   └── index.js 
  13. │   ├── assets 
  14. │   │   └── logo.png 
  15. │   └── main.js 
  16. └── webpack.config.js 

index.js

  1. // index.js 
  2.  
  3. // 引入組件 
  4. import marquee from './marquee'
  5. // 組件需要添加name屬性,代表注冊(cè)的組件名稱,也可以修改成其他的 
  6. marquee.install = Vue => Vue.component(marquee.name, marquee); //注冊(cè)組件 
  7.  
  8. export default marquee; 

2、修改webpack.config.js

  1. const NODE_ENV = process.env.NODE_ENV; 
  2. module.exports = { 
  3.   entry: NODE_ENV == 'development' ? './src/main.js' : './src/marquee/index.js'
  4.   output: { 
  5.     path: path.resolve(__dirname, './dist'), 
  6.     publicPath: '/dist/'
  7.     filename: 'marquee.js', //輸出文件名 
  8.     library: 'marquee', // 指定的就是你使用require時(shí)的模塊名 
  9.     libraryTarget: 'umd', // 指定輸出格式, UMD 同時(shí)支持兩種執(zhí)行環(huán)境:node環(huán)境、瀏覽器環(huán)境。 
  10.     umdNamedDefine: true // 會(huì)對(duì) UMD 的構(gòu)建過(guò)程中的 AMD 模塊進(jìn)行命名。否則就使用匿名的 define 
  11.   }, 

3、打包

  1. npm run build 

如果成功的話,根目錄下會(huì)出現(xiàn)dist文件夾,里面分別是marquee.js和marquee.js.map

  1. marquee/ 
  2. ├── dist 
  3. │   ├── marquee.js 
  4. │   ├── marquee.js.map 
  5. ├── index.html 
  6. ├── package.json 
  7. ├── README.md 
  8. ├── .babelrc 
  9. ├── .editorconfig 
  10. ├── .gitignore 
  11. ├── src 
  12. │   ├── App.vue 
  13. │   ├── marquee 
  14. │   │   └── marquee.vue 
  15. │   │   └── index.js 
  16. │   ├── assets 
  17. │   │   └── logo.png 
  18. │   └── main.js 
  19. └── webpack.config.js 

4、修改package.json

  1.  "author""maomincoding",  
  2.   "main""dist/marquee.js"
  3.   "license""ISC"
  4.   "keywords": ["marquee"], 
  5.   "private"false

author的值為npm用戶名,這里一定要注意。main的值為你剛才打包的路徑文件license的值按照以上即可keywords為用戶搜索的關(guān)鍵詞private設(shè)為false, 開(kāi)源因此需要將這個(gè)字段改為 false

5、修改.gitignore

可以 刪除 dist/字段,提交的時(shí)候一并上傳上去。

  1. .DS_Store 
  2. node_modules/ 
  3. dist/     
  4. npm-debug.log 
  5. yarn-error.log 
  6.  
  7. # Editor directories and files 
  8. .idea 
  9. *.suo 
  10. *.ntvs* 
  11. *.njsproj 
  12. *.sln 

6、編輯README.md

這是你上傳之后的自述文件,可以在網(wǎng)頁(yè)上顯示,用的也是md語(yǔ)法,這里就不顯示代碼了,來(lái)張網(wǎng)頁(yè)圖示范,也可以直接去marquee查看說(shuō)明

npm發(fā)布包以及更新包還有需要注意的幾點(diǎn)問(wèn)題(這里以發(fā)布vue插件為例)

第四步,npm包發(fā)布

1、在此之前,你一定要注意先查看登錄源,切換到根目錄下marquee/

  1. npm config get registry 

如果是 https://registry.npm.taobao.org 那么,輸入以下命令,切換到http://registry.npmjs.org

  1. npm config set registry=http://registry.npmjs.org 

切換淘寶源

  1. npm config set registry=https://registry.npm.taobao.org 

2、登錄,輸入命令

  1. npm login 

相繼輸入用戶名、密碼、郵箱。回車出現(xiàn) Logged in as maomincoding on http://registry.npmjs.org,那么就登陸成功了

3、上傳發(fā)布

  1. npm publish 

第五步,插件下載使用

替代marquee標(biāo)簽的文字橫向滾動(dòng)Vue插件

1、安裝

  1. # install dependencies 
  2. npm i marquee-components 

2、使用

在main.js引入

  1. import marquee from 'marquee-components' 
  2. Vue.use(marquee ); 

在頁(yè)面使用

  1. <template> 
  2.   <div id="app"
  3.        <marquee :val="msg"></marquee> 
  4.   </div> 
  5. </template> 
  6. <script> 
  7. export default { 
  8.   name'app'
  9.   data () { 
  10.     return { 
  11.       msg: 'vuevuevuevuevuevuevuevuevuevuevuevuevuevuevuevuevue' 
  12.     } 
  13.   } 
  14. </script> 

val后加文字即可,當(dāng)超過(guò)文本容器長(zhǎng)度時(shí),觸動(dòng)橫向滾動(dòng)效果。

第六步,npm包更新和撤銷

1、撤銷包

當(dāng)你想撤銷上傳的包時(shí),你可以看看下面的說(shuō)明:撤銷的壞處:

  • 1、根據(jù)規(guī)范,只有在發(fā)包的24小時(shí)內(nèi)才允許撤銷發(fā)布的包。
  • 2、即使你撤銷了發(fā)布的包,發(fā)包的時(shí)候也不能再和被撤銷的包的名稱和版本重復(fù)了(即不能名稱相同,版本相同,因?yàn)檫@兩者構(gòu)成的唯一標(biāo)識(shí)已經(jīng)被“占用”了)
  • 3、這里要說(shuō)一點(diǎn),取消發(fā)布包可能并不像你想象得那么容易,這種操作是受到諸多限制的,撤銷發(fā)布的包被認(rèn)為是一種不好的行為(試想一下你撤銷了發(fā)布的包[假設(shè)它已經(jīng)在社區(qū)內(nèi)有了一定程度的影響],這對(duì)那些已經(jīng)深度使用并依賴你發(fā)布的包的團(tuán)隊(duì)是件多么崩潰的事情!)

所以,慎行!!!

撤銷命令:

  1. npm unpublish 包名 --force 

送給你一句官方說(shuō)的話

  1. I sure hope you know what you are doing 

2、更新包

看到了撤銷的壞處,所以我推薦你更新包。更新包很簡(jiǎn)單,只需兩步:

(1)、打開(kāi)根目錄下的package.json找到version字段具體體現(xiàn)為:"version":"a.b.c"

1.修復(fù)bug,小改動(dòng),c加1 2.增加了新特性,但仍能向后兼容,b加1 3.有很大的改動(dòng),無(wú)法向后兼容,a加1

(2)、根目錄下輸入npm publis

  1. npm publish 

結(jié)語(yǔ)

這里是以發(fā)布Vue插件為例,你也可以單獨(dú)發(fā)布一個(gè)包。

1、輸入命令

  1. npm init 

根據(jù)自己的情況輸入然后回車,會(huì)自動(dòng)生成一個(gè)package.json文件

  1.   "name""vue-cli-configjs"
  2.   "version""2.0.0"
  3.   "description""vue.config.js by vue-cli3+"
  4.   "main""vue.config.js"
  5.   "scripts": { 
  6.     "test""echo \"Error: no test specified\" && exit 1" 
  7.   }, 
  8.   "keywords": [ 
  9.     "vue-cli-config" 
  10.   ], 
  11.   "author""maomincoding"
  12.   "license""ISC" 

2、然后建一個(gè)readme.md自述文件,用于說(shuō)明

3、最后發(fā)布即可

  1. npm publish 

原文地址:https://mp.weixin.qq.com/s/7tGMTOHCkq5BirTs1iEx6g

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品免费2021 | 国产在线精品香蕉综合网一区 | 亚洲AV国产精品无码精 | 久99视频精品免费观看福利 | 强行扒开美女大腿挺进 | 亚洲男人天堂网址 | 不良研究所地址一 | 男神插曲女生动漫完整版动漫 | 国产精品亚洲片夜色在线 | 日韩免费毛片视频杨思敏 | 99热这里只有精品国产在热久久 | 亚洲欧美视频在线播放 | 狠狠色综合久久久久尤物 | 国内精品在线播放 | 国产亚洲精品日韩香蕉网 | 丝瓜黄瓜茄子西红柿秋葵榴莲 | 成年视频在线观看免费 | 91国内精品 | 九九九九九热 | caopren免费视频国产 | 亚洲冬月枫中文字幕在线看 | 奇米网狠狠网 | 男人捅女人的鸡鸡 | 亚洲天堂精品视频 | 国产一卡2卡3卡四卡高清 | 国产va欧美va在线观看 | 国产精品永久免费视频观看 | 成人精品区 | 亚洲性视频在线观看 | 调教老师肉色丝袜的故事 | 成人免费片 | 男人影院天堂网址 | 国产123区在线视频观看 | 激情五月姐姐 | 国产精品 视频一区 二区三区 | 国产a免费 | 国产原创一区二区 | 日韩毛片免费在线观看 | 欧美贵妇videos办公室 | 国产亚洲欧美成人久久片 | 国产精品第2页 |