【问题标题】:Publish multiple Vuejs components in one project to npm using webpack使用 webpack 将一个项目中的多个 Vuejs 组件发布到 npm
【发布时间】:2018-03-30 09:15:09
【问题描述】:

我正在尝试将一个包含两个或多个 Vue 组件的项目发布到 npm,以便我可以像这样导入、注册和使用这两个组件:

import Component1 from 'npm-package'
import Component2 from 'npm-package'

这是我的 webpack 文件:

const webpack = require('webpack');
const merge = require('webpack-merge');
const path = require('path');

var config = {
  output: {
    path: path.resolve(__dirname + '/dist/'),
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel',
        include: __dirname,
        exclude: /node_modules/
      },
      {
        test: /\.vue$/,
        loader: 'vue'
      },
      {
        test: /\.css$/,
        loader: 'style!less!css'
      }
    ]
  },
  externals: {
    moment: 'moment'
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin( {
      minimize : true,
      sourceMap : false,
      mangle: true,
      compress: {
        warnings: false
      }
    } )
  ]
};


module.exports = [
  merge(config, {
    entry: path.resolve(__dirname + '/src/plugin.js'),
    output: {
      filename: 'vue-project.min.js',
      libraryTarget: 'window',
      library: 'VueProject',
    }
  }),
  merge(config, {
    entry: path.resolve(__dirname + '/src/index.js'),
    output: {
      filename: 'vue-project.js',
      libraryTarget: 'umd',
      library: 'vue-project',
      umdNamedDefine: true
    },
    resolve: {
      extensions: ['', '.js', '.vue'],
      alias: {
        'src': path.resolve(__dirname, '../src'),
        'components': path.resolve(__dirname, '../src/components')
      }
    }
  })
];

这是我用作构建过程入口点的 index.js 文件

import Component1 from './components/folder1/Component1.vue'
import Component1 from './components/folder2/Component2.vue'

export default {
  components: {
    Component1,
    Component2
  }
}

使用 npm run build 的构建过程运行良好,我可以将项目发布到 npm 并使用 npm install 安装它。导入和使用它可以正常工作,但是当我运行我的项目时出现错误:

未能安装组件:未定义模板或渲染函数。 找到的有关此错误的所有其他帖子都没有解决我的问题,因为它们都没有尝试导出多个组件。

当我在两个不同的项目中发布它们时,这两个组件完全按预期工作。

我在这里缺少什么?提前致谢!

【问题讨论】:

    标签: node.js npm vue.js vuejs2 vue-component


    【解决方案1】:

    您不需要使用components 属性进行导出,您只需执行以下操作:

    export {
        Component1,
        Component2
    }
    

    你会这样做:

    import {Component1} from 'npm-package';
    import {Component2} from 'npm-package';
    

    import {Component1, Component2} from 'npm-package';
    

    见:https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export

    【讨论】:

    • 这仍然导致挂载组件失败:模板或渲染函数未定义错误并且不显示任何内容。
    • 您如何使用这些组件?你是否为你的 Vue 实例定义了一个渲染函数?您可能还想查看我为我的一个包编写的 webpack 配置,看看它是否可以帮助您识别问题:github.com/craigh411/vue-rate-it/blob/master/config/…
    • 感谢您的参考,明天我会尝试使用新的输入使其正常工作!
    • 让它工作,错误是使用导出默认值而不是仅导出,我忽略了这一点。谢谢!
    猜你喜欢
    • 2023-03-31
    • 2020-12-17
    • 2021-08-16
    • 1970-01-01
    • 2018-01-02
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多