npm链接的本地库需要node_modules,而git链接的库(相同)不需要

时间:2019-06-25 07:25:51

标签: node.js reactjs webpack npm-link

很抱歉,标题不好(真的不知道我还能给这个问题加上什么标题)。

长话短说,作为第一次React-Component库开发人员。我正在使用 webpack 4 将我的 fancy-react-component-lib 转换为模块。

一切顺利,直到我开始使用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。

谁能告诉我为什么?

谢谢

1 个答案:

答案 0 :(得分:0)

由于没有人提供更好的答案,所以我将在此处发布我如何解决该问题的

首先,npm链接只不过是一个符号链接。而不是像react的解决方案页面所建议的那样使用npm链接。我已经尝试create symbolic links自己了,而且行得通。

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 [项目] / node_moduels / react [项目] / 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]

当然,请记住在创建符号链接之前先清理文件夹。