自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[383069]]

前言

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

第一步,安裝webpack簡易框架

  1. vue init webpack-simple marquee 

 

第二步,封裝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轉化成字符串 
  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.       // 設置位移 
  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 的構建過程中的 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為用戶搜索的關鍵詞private設為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ā)布

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 

相繼輸入用戶名、密碼、郵箱?;剀嚦霈F(xiàn) Logged in as maomincoding on http://registry.npmjs.org,那么就登陸成功了

3、上傳發(fā)布

  1. npm publish 

第五步,插件下載使用

替代marquee標簽的文字橫向滾動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后加文字即可,當超過文本容器長度時,觸動橫向滾動效果。

第六步,npm包更新和撤銷

1、撤銷包

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

  • 1、根據(jù)規(guī)范,只有在發(fā)包的24小時內(nèi)才允許撤銷發(fā)布的包。
  • 2、即使你撤銷了發(fā)布的包,發(fā)包的時候也不能再和被撤銷的包的名稱和版本重復了(即不能名稱相同,版本相同,因為這兩者構成的唯一標識已經(jīng)被“占用”了)
  • 3、這里要說一點,取消發(fā)布包可能并不像你想象得那么容易,這種操作是受到諸多限制的,撤銷發(fā)布的包被認為是一種不好的行為(試想一下你撤銷了發(fā)布的包[假設它已經(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.修復bug,小改動,c加1 2.增加了新特性,但仍能向后兼容,b加1 3.有很大的改動,無法向后兼容,a加1

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

  1. npm publish 

結語

這里是以發(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 

 

責任編輯:姜華 來源: 前端歷劫之路
相關推薦

2010-10-25 09:54:09

Windows Pho

2010-02-24 13:33:11

2009-08-28 09:26:35

C#連接Access

2022-09-14 10:50:36

npm代碼前端

2021-02-24 07:40:38

React Hooks閉包

2009-08-11 14:32:06

C#讀取Excel數(shù)據(jù)

2009-06-29 18:26:46

HibernateHQL查詢

2020-11-16 07:56:45

Windows10

2022-08-14 08:29:21

npmNode

2009-06-22 13:46:00

java程序員考試

2020-10-26 14:01:22

Java泛型

2009-04-23 14:30:19

UML建模

2013-09-29 10:36:08

VMware虛擬化

2023-06-07 17:56:17

2010-07-12 14:38:03

UML用例建模

2012-04-25 22:45:46

2024-05-09 10:26:14

2023-10-04 00:03:00

SQL數(shù)據(jù)庫

2011-05-12 09:01:29

HTML5

2021-07-30 09:00:40

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號