【问题标题】:npm linked local library requires node_modules while git linked libarary (same) doesn'tnpm 链接本地库需要 node_modules 而 git 链接库(相同)不需要
【发布时间】:2019-07-09 11:48:08
【问题描述】:

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

长话短说,作为第一次反应组件库开发人员。我正在使用 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。

谁能告诉我为什么?

谢谢

【问题讨论】:

    标签: node.js reactjs webpack npm-link


    【解决方案1】:

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

    首先,npm link 只不过是一个符号链接。而不是像 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[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]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多