vue使用webpack封装组件上传到npm
组件上传npm,使用简易版webpack
1. 为什么使用简易版,因为好配置
vue init webpack-simple jwq-ui
//jwq-ui是名称,请选择npm里面没有的名称
2.创建components文件夹,里面放自己的组件,在跟目录下新建index.js作为入口文件
3.index.js文件的内容
import firstComponent from "./src/components/firstComponent"
import secondComponent from "./src/components/secondComponent"
import _Vue from 'vue'
//vue 插件模式需要暴露一个install方法
//判断是否存在vue
//Vue.use()
const components=[firstComponent,secondComponent]
const install=(Vue)=>{
if (!Vue) {
window.Vue = Vue = _Vue
}
components.forEach((elem,i)=>{
Vue.component(elem.name, elem);
})
}
export default install
4.package.json里面要改的
{
"name": "jwq-ui",//自己要定义的名称
"description": "A Vue.js components",
"version": "1.0.0",
"author": "jwq",//作者
"license": "MIT",
"private": false,//一定要设置false
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
"dependencies": {
"vue": "^2.5.11"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
],
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.0",
"babel-preset-stage-3": "^6.24.1",
"cross-env": "^5.0.5",
"css-loader": "^0.28.7",
"file-loader": "^1.1.4",
"node-sass": "^4.5.3",
"sass-loader": "^6.0.6",
"vue-loader": "^13.0.5",
"vue-template-compiler": "^2.4.4",
"webpack": "^3.6.0",
"webpack-dev-server": "^2.9.1"
},
"keywords": [
"jwq-ui" //npm搜索你的库的关键词
],
"main": "dist/jwq-ui.js",//打包后的文件夹里面的js文件
"files":[
"dist",
"src"
]
}
5.webpack.config.js要改的
var path = require('path')
var webpack = require('webpack')
const NODE_ENV = process.env.NODE_ENV;//这个是增加的
module.exports = {
// entry: './src/main.js',
// output: {
// path: path.resolve(__dirname, './dist'),
// publicPath: '/dist/',
// filename: 'build.js'
// },
entry: NODE_ENV == 'development' ? './src/main.js' : './index.js',//index.js是入口文件
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',//路径
filename: 'jwq-ui.js',//打包之后的名称
library: 'jwq-ui', // 指定的就是你使用require时的模块名
libraryTarget: 'umd', // 指定输出格式
umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
},
6.index.html要改的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jwq-ui</title>
</head>
<body>
<div id="app"></div>
<!-- 下面的jwq-ui.js是打包后的文件 -->
<script src="/dist/jwq-ui.js"></script>
</body>
</html>
7.npm run build 打包
npm run build
8.npm的登录以及上传
做这个操作之前请先去注册npm账号,并验证自己邮箱的信息(验证邮箱,验证邮箱,重要的事情说三遍),要不然后面上传会出问题报403,,400的问题
npm login //npm 登录
npm publish //npm 发布包
npm version patch //更新版本号
npm publish //重新上传
npm unpublish jwq-ui@1.0.2 //撤销某个版本
npm init -y //初始化package