vue组件发布npm

5 篇文章 0 订阅

主要分为三部

这个其实和react的差不多就是安装不同的几个插件即可,下面详细介绍

1.配置webpack

const path = require('path');
const HtmlWebpackPlugin = require("html-webpack-plugin");
const VueLoaderPlugin = require('vue-loader/lib/plugin');//配置vue的插件加载vue的模板用
const vueLoaderPlugin = new VueLoaderPlugin()
const htmlWebpackPlugin = new HtmlWebpackPlugin({
    template: path.join(__dirname, "./public/index.html"),
    filename: "./index.html"
});
var NODE_ENV = process.env.NODE_ENV;
module.exports = {
    mode: NODE_ENV == 'dev' ? "development" : "production",
    entry: path.join(__dirname, NODE_ENV == 'dev' ? "./src/index.js" : "./src/components"),//这个地方就是分是开发还是打包发布开发就index.js打包就直接打包components的文件这样就不会把index.js中的例子打包进去
    output: {
        path: path.join(__dirname, "dist"),
        libraryTarget: 'umd',  //发布组件专用
        filename: "index.js"
    },
    module: {
        rules: [{
            test: /\.(js|jsx)$/,
            use: "babel-loader",
            exclude: /node_modules/
        }, {
            test: /\.css$/,
            use: [
                'style-loader',
                'css-loader'
            ]
        },
        {
            test: /\.(png|jpg)$/,
            use: {
                loader: 'url-loader',
                options: {
                    limit: 100 * 1024, //小于100kb变成base64
                    esModule: false //如果不设置这个HTML中img的路径会出现问题
                }
            }
        },
        {
            test: /\.(woff|woff2|eot|otf|ttf)$/,
            use: ['file-loader']
        }, {
            test: /.vue$/,//加载vue模板用的
            loader: 'vue-loader'
        }
        ]
    },
    plugins: [htmlWebpackPlugin,vueLoaderPlugin],
    devServer: {
        host:'0.0.0.0',//配置局域网可以访问,这个可以不屑
        port: 8000
    }
};

2.package.json文件
下面main是重要选项是发布后用户通过zzvue可以访问到的地址
files也是重要选项是打包要发布的文件夹

{
  "name": "zzvue",
  "version": "1.0.3",
  "description": "vue组件制作,添加移动功能",
  "main": "dist/index.js",
  "files": [
    "dist"
  ],
  "scripts": {
    "dev": "set NODE_ENV=dev&& webpack-dev-server",
    "build": "set NODE_ENV=prod&& webpack"
  },
  "author": "reqingzai",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.2.2",
    "@babel/preset-env": "^7.3.1",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.5",
    "css-loader": "^5.0.1",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^3.2.0",
    "style-loader": "^2.0.0",
    "url-loader": "^4.1.1",
    "vue": "^2.6.12",
    "webpack": "^4.29.0",
    "webpack-cli": "^3.2.1",
    "webpack-dev-server": "^3.1.14",
    "vue-loader": "^15.9.6",
    "vue-template-compiler": "^2.6.12"
  },
  "dependencies": {
    
  }
}

3.目录结构
结构目录
这是结构目录
在components下面有个index.js专门引入所有组件用的
index.html中内容如下

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Vue</title>
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

App.vue内容如下

<template>
  <div id="app">
  </div>
</template>
<script>
export default {
};
</script>

index.js文件如下
这里需要挂在vue所以要写这个index.js文件

import Vue from 'vue'
import App from './App.vue'
new Vue({
    render: h => h(App)
}).$mount('#app')

然后就可以开发组件了在app.vue中引用然后进行尝试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值