1

抱歉标题不好(真的不知道我可以给这个问题提供什么其他标题)。

长话短说,作为第一次反应组件库开发人员。我正在使用webpack 4将我的幻想反应组件库转换为模块。

一切都很顺利,直到我开始使用npm-link来加快我的本地开发速度。

所以主要问题是虽然我已经指定如下

//webpack.fancy-react-component-lib.config.js
...    
externals: {
        react: {
          root: 'React',
          commonjs2: 'react',
          commonjs: 'react',
          amd: 'react',
          umd: 'react',
        },
        'react-dom': {
          root: 'ReactDOM',
          commonjs2: 'react-dom',
          commonjs: 'react-dom',
          amd: 'react-dom',
          umd: 'react-dom',
        },
      }
...

//package.json
...
"dependencies": {},
  "devDependencies": {
   ...
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.0.3",
    "react-router-dom": "^5.0.0",
    ...
  },
  "peerDependencies": {
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.0.3",
    "react-router-dom": "^5.0.0"
  }
...

所以如果我通过 git 语法导入了模块

"fancy-react-component-lib" :"git+ssh://git@bitbucket.org/fancy-react-component-lib.git#test1.0.11"

一切正常,最终捆绑的 js 中只有一个react副本。

但是如果我用 npm-link 绑定到项目文件夹,react 的第二个副本会添加最终绑定的 js。

谁能告诉我为什么?

谢谢

4

1 回答 1

0

由于没有人提供更好的答案,我将在这里发布我是如何解决这个问题的。

首先 npm link 只不过是一个符号链接。而不是像 react 的解决方案页面所建议的那样使用 npm 链接。我试图自己创建符号链接并且它有效。

ln -s [your_fancy_lib_project] [project/node_moduels/your_fancey_lib_project]

您还需要在[your_fancy_lib]/node_modules/react[your_fancy_lib]/node_moduels/react-dom中创建链接到 [project]/node_moduels/react[project]/node_moduels/react-dom

ln -s [project/node_moduels/react] [your_fancey_lib_project/node_moduels/react]
ln -s [project/node_moduels/react-dom] [your_fancey_lib_project/node_moduels/react-dom]

当然记得在创建符号链接之前清理文件夹。

于 2019-07-08T07:25:51.767 回答