首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用webpack将一个项目中的多个Vuejs组件发布给npm

使用webpack将一个项目中的多个Vuejs组件发布给npm
EN

Stack Overflow用户
提问于 2017-10-18 13:18:10
回答 1查看 2.6K关注 0票数 5

我试图向npm发布一个包含两个或多个Vue组件的项目,以便我可以导入、注册和使用这两个组件,如下所示:

代码语言:javascript
复制
import Component1 from 'npm-package'
import Component2 from 'npm-package'

这是webpack的档案:

代码语言:javascript
复制
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文件作为构建过程的入口点

代码语言:javascript
复制
import Component1 from './components/folder1/Component1.vue'
import Component1 from './components/folder2/Component2.vue'

export default {
  components: {
    Component1,
    Component2
  }
}

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

未能装入组件:未定义的模板或呈现函数。其他所有关于这个错误的帖子都没有解决我的问题,因为他们没有一个试图导出多个组件。

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

我在这里错过了什么?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-18 13:31:01

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

代码语言:javascript
复制
export {
    Component1,
    Component2
}

然后你就会:

代码语言:javascript
复制
import {Component1} from 'npm-package';
import {Component2} from 'npm-package';

代码语言:javascript
复制
import {Component1, Component2} from 'npm-package';

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46811157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档