Javascript 您能否使用Webpack将库从一个repo导入另一个repo中的web应用程序?

Javascript 您能否使用Webpack将库从一个repo导入另一个repo中的web应用程序?,javascript,git,npm,webpack,vue.js,Javascript,Git,Npm,Webpack,Vue.js,所以我有一个包含Vue.js组件的库,还有一个Vue web应用程序,可以导入这些组件。两者都在Webpack上运行,并且都在单独的存储库中 在使用webpack之前,我使用了browserify hmr,并且可以使用npm链接将库从我的开发环境导入到web包中。本质上,它与import'../../../library/index.js' 使用Webpack时,我会遇到如下错误: ERROR Failed to compile with 1 errors 1:16:18 PM This d

所以我有一个包含Vue.js组件的库,还有一个Vue web应用程序,可以导入这些组件。两者都在Webpack上运行,并且都在单独的存储库中

在使用webpack之前,我使用了browserify hmr,并且可以使用npm链接将库从我的开发环境导入到web包中。本质上,它与
import'../../../library/index.js'

使用Webpack时,我会遇到如下错误:

ERROR  Failed to compile with 1 errors
1:16:18 PM

This dependency was not found:

* !!vue-style-loader!css-loader!../../../web-app/node_modules/vue-loader/lib/style-rewriter
?id=data-v-6afebbcb!sass-loader!../../../web-app/node_modules/vue-loader/lib/selector
?type=styles&index=0!./Component.vue in ../TheLibrary/src/Component.vue

To install it, you can run: npm install --save !!vue-style-loader!css-loader
!../../../web-app/node_modules/vue-loader/lib/style-rewriter?id=data-v-6afebbcb
!sass-loader!../../../web-app/node_modules/vue-loader/lib/selector?type=styles
&index=0!./Component.vue
我正在尝试在本地对库进行更改,并将其导入到我的本地web应用程序中,而不必推送库更改并从web应用程序中拉取模块更新。这和网页包有关系吗

此外,webpack项目是使用此

更新

发生此错误是因为库具有依赖项,而web应用程序上未安装该依赖项。只要我在web应用程序上安装该依赖项,错误就会消失


有什么想法吗?

我认为最好的方法是将您的通用功能移到npm包中,并将其用于两个Web包项目的依赖项中。这是正确的方法

终于找到了解决办法。这一切都在网页包的解析器中。在WebpackV1中工作,可能是因为它在
build/webpack.base.js

resolve: {
  fallback: [path.join(__dirname, '../node_modules')],
  ...
但webpackv2的工作方式似乎不同。我的工作环境看起来像这样

resolve: {
  modules: [
    path.join(__dirname, '../node_modules/TheLibrary'),
    ...
resolve: {
  modules: [
    path.join(__dirname, '../node_modules/TheLibrary'),
    path.join(__dirname, '../node_modules/TheLibrary/node_modules/Component'),
    ...
现在,它在符号链接库中查找其依赖项

注意:如果该库也有一个符号链接的库,那么在此解决方案下,您需要将其也包括在根web应用程序下。像这样的

resolve: {
  modules: [
    path.join(__dirname, '../node_modules/TheLibrary'),
    ...
resolve: {
  modules: [
    path.join(__dirname, '../node_modules/TheLibrary'),
    path.join(__dirname, '../node_modules/TheLibrary/node_modules/Component'),
    ...

所以仍然可以找到更好的解决方案:)

实际上,库是常见的功能。假设它被用于两个独立的web应用程序中。另外,查看更新以了解更多信息。