手把手发布一个npm包及相关注意事项

前言

这里是发布npm包的具体步骤,手把手教会,相关原理在其余文章下面有
原理好文章指路
10分钟教你快速开发一个vue插件并发布npmhtml

手把手教你封装一个 vue componentvue

发布以前,须要注册一个npm帐号
https://www.npmjs.com/ 这里注册webpack

具体步骤

1.新建项目git


$ npm install -g vue-cli
$ vue init webpack-simple my-project
$ cd my-project
$ npm install
$ npm run devweb

如需安装less
$ npm install less less-loader --save-devvue-cli

2.代码npm


src 下面新建一个components文件夹。里面放各类组件文件夹。
例如新建input文件夹 里面有index.js 和Input.vue文件json

clipboard.png

clipboard.png

// input.js
import Input from './Input.vue'
export default Input

// Input.vue
export default {
  name: 'ui-input', // 这是注册组件的名字。也是要使用这个npm包的标签名字
  props: {
  },
  data () {
    return {
    }
  },
  mounted () {
  },
}
// main.js
import uiInput from './components/input'
const jovoUI = {
  uiInput,
  uixxx  // 其他vue组件
}
if (typeof window !== 'undefined' && window.Vue) { 
  window.Vue.use(jovoUI)
}
jovoUI.install = function (Vue, options) {
  Vue.component(uiInput.name, uiInput)
}
export default jovoUI
// 跑项目的时候测试用,在本地测试的时候,就把组件注册在本地,app.vue里面引用组件调试
// Vue.component('ui-input', uiInput)
// new Vue({
//   el: '#app',
//   render: h => h(App)
// })

须要在本地测试的时候,解开上面的注释,在app.vue或者其余vue文件里测试并发

// app.vue
<div id="app">
  <ui-input></ui-input>
</div>

3.发布准备app


1. .gitignore文件 删掉dist忽略
2.
// webpack.config.js
以前是
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  }
改成
output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    // filename: 'build.js' 这是原来的
    filename: 'jovoui.js', // 打包后js的名字,本身取,本地调试时,新加的这些东西都要注释掉,解开filename: 'build.js注释
    library: 'jovoui',  // 使用require引用时的名字
    libraryTarget: 'umd', // 指定你的模块输出类型,能够是commonjs,AMD,script形式,UMD模式
    umdNamedDefine: true
  }
3. // package.json文件 
// 文件第一行的 name 是包的名字,不能和已有的npm包重名,不然npm publish时会提示你是否登陆,其实你已经登录了 例如"name": "jovocom",
private改成false
"main": "dist/jovoui.js" 这条是新增的,是打包文件入口,以前是build.js,参考第二条取得打包名字

4. // index.html 
// 本地调试时,须要把第一行解开,以及main.js的注释解开
<!-- <script src="/dist/build.js"></script> -->注释
<script src="/dist/jovoui.js"></script>

4.注意事项


1.每次发布以前,要在package.json改版本号

2.npm run build, // 会在生成一个dist文件,里面有jovoui.js和jovoui.map

3.npm publish,// 如有错执行第5条,判断是否登陆,未登陆执行第四条

4.npm login your account your password your@email.com

5.npm whoami // 判断是否登陆

6.每次发布完npm包再本地调试npm时,须要解开如下注释
(1)index.html 改成 <script src="/dist/build.js"></script> // 本地调试时
(2)webpack.config.js 里面的注释切换成build那个 新增的注释掉
(3)main.js 本地注册的部分解开注释
(4)npm run build 打包一次

7.更新记一次坑,有一次不知道怎么的切换了淘宝源,npm login一直登不上,报错conflict什么的。要切换到npm官方仓库上,这个时候npm login就能登上了。最后发布npm是发布到官方npm上,不是cnpm,因此要是只能有npm才能下载
$ npm install -g nrm
$ nrm use taobao
$ nrm use npm // 用这句使用npm

8.npm publish出错,说包的名字跟已有的包太类似了,叫换一个,而后换了一个,就成功publish了,因此取名字仍是要独特一点,符合这个组件特性一点

使用

npm发布成功使用。$ npm install xx // 这是发布的包的名字,就是package.json里面的name每次包更新以后再次安装能够 $ npm install xx@latest// main.jsimport xx from '包名'Vue.use(xx)// 某个vue文件<ui-input></ui-input> // 这是当初注册组件的名字

相关文章
相关标签/搜索