初始化项目
使用 vue init webpack-simple npm-practice, 我们不需要很多配置,webpack-simple足够了
修改文件目录
在src目录下新建components文件夹,然后在此文件夹下建立Main.vue文件,和index.js文件,index.js是把Main.vue文件暴露出去的出口
修改文件内容,配置
- Main.vue 内容如下:
<template>
<div class="container">
<div>{{propData}}</div>
</div>
</template>
<script>
export default {
name: 'npm-practice',
data () {
return {
}
},
props: {
propData: {
type: String,
default: '我是默认值'
}
}
}
</script>
<style lang="scss">
.container{
text-align: center;
}
</style>
- App.vue 内容如下:
<template>
<div id="app">
<Main :propData='initData'/>
</div>
</template>
<script>
import Main from './components/Main'
export default {
name: 'app',
components:{
Main
},
data(){
return {
initData: 'hello 你好'
}
}
}
</script>
<style lang="scss">
</style>
- index.js内容如下:
import Main from './Main'
import _Vue from 'vue'
Main.install = Vue => {
if (!Vue) {
window.Vue = Vue = _Vue
}
Vue.component(Main.name, Main)
}
export default Main;
- 修改package.json package.json需要修改private字段(private是true的时候不能发布到npm,需设置成false)
并增加main字段, main字段是require方法可以通过这个配置找到入口文件
- 修改 webpack.config.js
入口会根据开发环境 ,生产环境切换, main.js 是npm run dev 的入口,就是App.vue, 用于调试/测试我们开发的组件;
index.js是npm run build 的入口,打包到生产环境打包就只是单纯的 npm-practice 组件
同时去掉生产环境的source-map
-
修改index.html的js引用路径,因为我们修改了output 的 filename,所以引用文件的名字也得变
-
新建一个文件,名为.npmignore,是不需要发布到npm的文件和文件夹,规则和.gitignore一样
.*
*.md
*.yml
build/
node_modules/
src/
test/
发布到npm
- 去 npm 官网注册个账号 www.npmjs.com/
- 如果设置了淘宝镜像,需要还原
npm config set registry http://registry.npmjs.org
- 在该组件根目录下,运行npm login,会提示输入个人信息,输入账号密码进行登录
- 然后执行 npm publish
- npm上删除已发布的npm包
npm unpublish --force //强制删除,可以撤销24小时发布的包,有些包发布久了,这个方法不会再管用了。
npx force-unpublish package-name '原因描述' // 是删除已发布好的包
- 可以去npm 官网上查看包是否发布成功