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

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

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

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

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

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

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

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

前言

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

第一步,安裝webpack簡易框架

  1. vue init webpack-simple marquee 

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

第二步,封裝Vue插件

1、安裝完成后,會出現(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、接下來,我們在src文件夾下創(chuàng)建一個名叫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、開始在marquee.vue封裝Vue插件了

  1. <template> 
  2.   <div class="marquee-wrap"
  3.     <!-- 滾動內(nèi)容 --> 
  4.     <div class="scroll"
  5.       <p class="marquee">{{text}}</p> 
  6.       <!-- 文字副本 --> 
  7.       <p class="copy"></p> 
  8.     </div> 
  9.     <!-- 為了計算總文本寬度,通過css在頁面中隱藏 --> 
  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 的計算后寬度 (由于overflow的存在,直接獲取不到,需要獨立的node計算) 
  40.       let width = document.querySelector('.getWidth').scrollWidth 
  41.       // 如果文本內(nèi)容的寬度小于頁面寬度,則表示文字小于等于一行,則不需要滾動 
  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.         // 如果位移超過文字寬度,則回到起點 
  51.         if (-distance >= width) { 
  52.           distance = 16 // 距離必須與marquee的margin寬度相同 
  53.         } 
  54.         scroll.style.transform = 'translateX(' + distance + 'px)' 
  55.       }, 20) 
  56.     } 
  57.   }, 
  58.   beforeDestroy () { 
  59.     // 清除計時器 
  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、啟動命令,查看效果

  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屬性,代表注冊的組件名稱,也可以修改成其他的 
  6. marquee.install = Vue => Vue.component(marquee.name, marquee); //注冊組件 
  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時的模塊名 
  9.     libraryTarget: 'umd', // 指定輸出格式, UMD 同時支持兩種執(zhí)行環(huán)境:node環(huán)境、瀏覽器環(huán)境。 
  10.     umdNamedDefine: true // 會對 UMD 的構(gòu)建過程中的 AMD 模塊進行命名。否則就使用匿名的 define 
  11.   }, 

3、打包

  1. npm run build 

如果成功的話,根目錄下會出現(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, 開源因此需要將這個字段改為 false

5、修改.gitignore

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

  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)頁上顯示,用的也是md語法,這里就不顯示代碼了,來張網(wǎng)頁圖示范,也可以直接去marquee查看說明

npm發(fā)布包以及更新包還有需要注意的幾點問題(這里以發(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)簽的文字橫向滾動Vue插件

1、安裝

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

2、使用

在main.js引入

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

在頁面使用

  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)超過文本容器長度時,觸動橫向滾動效果。

第六步,npm包更新和撤銷

1、撤銷包

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

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

所以,慎行!!!

撤銷命令:

  1. npm unpublish 包名 --force 

送給你一句官方說的話

  1. I sure hope you know what you are doing 

2、更新包

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

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

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

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

  1. npm publish 

結(jié)語

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

1、輸入命令

  1. npm init 

根據(jù)自己的情況輸入然后回車,會自動生成一個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、然后建一個readme.md自述文件,用于說明

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

  1. npm publish 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: les女同h高h喷水 | 九九九久久久 | 十六一下岁女子毛片免费 | 精品无人区乱码1区2区3区在线 | 高清一级做a爱免费视 | 亚洲一区二区三区在线播放 | 精品国产精品人妻久久无码五月天 | 女仆色网址 | 国产欧美精品一区二区三区–老狼 | 日本一卡二卡3卡四卡网站精品 | 亚洲美女人黄网成人女 | 天天综合五月天 | 手机能看的黄色网站 | 免费老外的毛片清高 | 我和岳偷长篇小说 | 给我一个黄色网址 | 99在线视频观看 | 91短视频社区在线观看 | 欧美久久天天综合香蕉伊 | 成人精品在线 | 男人看的网址 | 奇米影视99 | 四虎新网站 | 高清视频在线播放 | 国产高清在线看 | 99视频在线免费观看 | 亚洲国产精品自在自线观看 | 美女天天色 | 四虎影院免费在线 | 国产精品香蕉一区二区三区 | 精品无人区麻豆乱码1区2 | aaaa黄色片 | 青青青在线视频 | 亚洲毛片基地4455ww | 国产成人激情 | 性欧美高清强烈性视频 | 99热免费在线观看 | 亚洲午夜性春猛交xxxx | 国产午夜精品不卡视频 | 美女被上漫画 | 国产真实偷乱视频在线观看 |