标签: npm-link

使用 TypeScript 和 NPM 链接创建 React App:枚举导致模块解析失败

我有一个基本的create-react-appTypeScript 项目 ( client)。只是目录,我有一个server和一个shared文件夹。在shared文件夹内,我有许多在和之间共享的interfaces 和s 。enumserverclient

我希望将此shared文件夹链接到clientserver包。

首先,我转到shared并运行$ yarn link,然后$ yarn link sharedclientserver文件夹中运行。

服务器非常高兴,而且大多数情况下客户端也是如此。但是,一旦我使用中目录中enum的其中一个,就会收到错误:sharedclient

../shared/src/models/Roles.ts 4:0
Module parse failed: The keyword 'enum' is reserved (4:0)
File was processed with these loaders:
 * ./node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
You may need an additional loader to handle the result of these loaders. …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs webpack npm-link babel-loader

9
推荐指数
2
解决办法
6458
查看次数

无法在 NPM 链接库上设置断点

我学习 React JavaScript,现在遇到这个问题
我在 GitHub 中分叉了notistack 库,然后使用 Git Desktop 下载我的分叉,因此该项目位于 Windows 10 上的 D:/git/notistack。

在遵循npm-link 文档之后,一切正常,我可以在 VScode 中调试运行notistack 库打字稿项目。

我的 notistack 库上的“npm link”和 ReactJs 项目中的“npm link notistack”都是标准程序,我可以调试运行该库。我进行了更改并重建了notistack 库,我发现它工作正常。

但是,当我像这样设置 launch.json 并使用runtimeArgs来启用调试时,我无法使断点在库中工作。

{
  "version": "0.2.0",
  "configurations": [
      {
        "name": "Launch Edge",
          "request": "launch",
          "type": "pwa-msedge",
          "url": "https://localhost:6545",
          "webRoot": "${workspaceFolder}",
          "runtimeArgs": [
            "--preserve-symlinks"
        ],
      }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我在 ReactJs 项目 node_module/notistack 库中设置了断点,但 VSCode 将它们设置为未绑定断点。

在此输入图像描述

我怀疑这与 notistack 库可能是一个 Typescript 项目有关,并且我链接到了一个 ReactJs 项目。任何想法?请建议我需要检查和做什么?

breakpoints reactjs npm-link

9
推荐指数
1
解决办法
2694
查看次数

如何在安装时直接执行'npm link'

我有一个内部项目,我想将命令链接到文件bin.喜欢这样package.json:

{
  "name": "my-project",
  "bin": {
    "cli-name": "./bin/my-executable.js"
  },
  "dependencies": {
    "node-red": "^1.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

执行时npm install,将安装所有依赖项,并且也将创建bin配置node-red.

但我自己bin将被完全忽略.这不是可以用cli-namecmd.npm link在第二步中也必须执行.然后cli-name将在控制台中作为命令使用.我甚至试过在其中使用with postinstall脚本,但后来我得到了一个循环......npmnpm link

有没有办法一步到位npm install

node.js npm package.json npm-install npm-link

8
推荐指数
1
解决办法
3207
查看次数

获取 __dirname 指向文件夹路径而不是符号链接文件夹的真实路径

使用 npm 链接时如何让 __dirname 指向文件夹的保留路径而不是符号链接文件的真实路径。

设想

文件夹设置

project
  |
  ---- moduleA
  |       |
  |       ---- moduleA.js
  |
  ---- app
       |
       --- node_modules
Run Code Online (Sandbox Code Playgroud)

project
  |
  ---- moduleA
  |       |
  |       ---- moduleA.js
  |
  ---- app
       |
       --- node_modules
Run Code Online (Sandbox Code Playgroud)

内部 moduleA.js

__dirname -> /project/moduleA
Run Code Online (Sandbox Code Playgroud)

然而,预期的行为是

__dirname -> /project/app/node_modules/moduleA
Run Code Online (Sandbox Code Playgroud)

由于 npm link 创建一个符号链接,将链接的模块插入到 node_modules 文件夹中,从而模拟直接安装模块的体验。

如何让 __dirname 指向保留的路径而不是模块所在的真实路径?

注意:--preserve-symlinks 命令行选项不会影响 __dirname 的值

javascript symlink node.js npm npm-link

8
推荐指数
0
解决办法
883
查看次数

如何使用共享库“ npm link” Angular库?

对于我的Angular 4.x应用程序(App),我编写了一个当前不兼容AoT的库(例如“ Lib”)。

App和Lib都依赖于第三方库(例如“ X”)。当我使用“ npm link ”在App中开发Lib时,由于X现在同时位于App / node_modules和Lib / node_modules中,因此某些事情停止了工作,并且在运行时似乎从X提供了多个提供者。当我从X中删除X时Lib / node_modules一切正常。我怀疑这是提供者的一般限制,与X无关,但是在我的情况下,X实际上是ngx-translate。

我发现“最干净”的解决方法是仅对App而不是对Lib运行“ npm install”。这样,大多数依赖项(包括X)仅存在于App node_modules中,并且应用程序可以正常运行。但是,这会在开发Lib时导致IDE问题:1)如果我在Lib的项目上工作,它将丢失依赖项,并且没有智能感知(例如,它不会构建)。2)如果相反,我是从App的项目中开发Lib(直接在node_modules \ Lib上),则它没有正确的版本控制集成(例如,我无法检出)。

非常感谢!

node-modules npm-install npm-link ngx-translate angular

8
推荐指数
0
解决办法
513
查看次数

链接库和工作区应用程序之间的链接反应版本

我正在为我的常用组件开发一个 React 库。在我的根文件夹中有:

\n\n
    \n
  • 我的汇总配置和src/包含我的库的文件夹。构建时,捆绑文件(ES、CJS 和 UMD)位于该dist/文件夹中。
  • \n
  • 我的工作区:一个简单的parcel捆绑应用程序,其中有一个独立的package.json. 在此package.json,myLib 处于依赖关系中,我链接了它。
  • \n
\n\n

当我想在工作区中使用 myLib 时,我会像这样导入它:import { Button } from \'myLib\'

\n\n

在这里,一切似乎都还好。但是在一个组件中我使用了一个钩子并且出现了这个错误:

\n\n
Uncaught Invariant Violation: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React …
Run Code Online (Sandbox Code Playgroud)

javascript npm reactjs npm-link

8
推荐指数
2
解决办法
7954
查看次数

如何将 npm link 与使用 TypeScript 编写的模块一起用于开发?

我正在使用 TypeScript 和 Webpack 构建一个库。

为了开发这个库,我创建了一个单独的测试项目(使用 JS 编写)并使用npm link <package-name>.

问题是链接指向构建文件,npm run build每次进行更改时我都需要运行。

我想要一个指向源文件的链接并进行实时重新加载。是否可以?我是否还需要使用 TS 编写我的测试项目才能使其成为可能?

图书馆package.json

{
  ...
  "main": "lib/qr-code-styling.js",
  "files": [
    "lib"
  ],
  "scripts": {
    "build": "webpack --mode=production"
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

库代码https://github.com/kozakdenys/qr-code-styling/tree/v1

测试项目代码https://github.com/kozakdenys/qr-code-styling-site

PS我也试过"module": "src/index.ts"package.json,但它会导致错误的测试项目Uncaught Error: Cannot find module './core/QRCodeStyling'

npm typescript webpack package.json npm-link

8
推荐指数
2
解决办法
7363
查看次数

`yarn link` 和 `npm link` 可以互操作吗?

yarn我知道和之间存在细微的差别npm。现在我有一个用yarn管理的库和一个用npm管理的应用程序。

如果我通过yarn在我的lib目录中创建一个链接的pkg并通过npm在我的其他目录中应用它,它应该可以正常工作吗?或者我应该预料到这个设置会出现问题吗?如果是,可能会出现哪些问题以及如何避免它们(除了将两个项目转交给同一经理之外)

~/the-lib$ yarn link 
~/app$ npm link @the/lib
Run Code Online (Sandbox Code Playgroud)

npm yarnpkg npm-link yarn-link

8
推荐指数
1
解决办法
963
查看次数

VSCode 调试器:在与“npm link”符号链接的 Typescript 包中设置断点

我正在尝试调试 NodeJS 应用程序及其与npm link.

结构如下:

/root/package-a # typescript package
/root/package-b # another typescript package
/root/app # NodeJS application
Run Code Online (Sandbox Code Playgroud)

我已将包链接到应用程序,如下所示:

  1. npm link每个包装内
  2. npm link package-a package-b 在应用程序中

然后/root/app/.vscode/launch.json我有:

"runtimeArgs": ["--preserve-symlinks"],
"outFiles": [
  "${workspaceFolder}/build/**/*.js",
  "${workspaceFolder}/../package-a/build/**/*.js",
  "${workspaceFolder}/../package-b/build/**/*.js",
]
Run Code Online (Sandbox Code Playgroud)

当使用 . 构建每个包和应用程序时,这一切都非常有效npm run tsc。同样在监视模式下,更改会正确地从包传播到应用程序。但是,当我尝试在任何包内的 VS Code 中设置断点时,调试器找不到相关的 TS 源。断点保持灰色:-(

红色断点在应用程序中,而灰色断点在包内

另外:我已经设置了每个tsconfig.json文件,因此应用程序和包中的每个构建文件旁边"sourceMap": true都有文件。.js.map

如何正确设置,使包中的断点变成红色?

source-maps typescript visual-studio-code npm-link vscode-debugger

8
推荐指数
1
解决办法
1208
查看次数

一个项目中存在多个 npm 链接

我正在努力使用 npm 链接。事实上我有两个本地包我想在我的项目中使用。

在我执行命令的每个包上sudo npm link 。当我这样做时,npm -g list我可以看到这些包及其参考。

当我在我的项目中创建一个时npm link <my-package-1>,这会在node_modules中添加我的第一个包的符号链接。到目前为止,一切都很好。

仅当我在我的项目中进行时npm link <my-package-2>。npm 首先从node_modules 中的第一个包中删除符号链接,然后创建指向node_modules 中第二个包的符号链接。我不知道为什么,但我的项目中不能有多个带有链接的包。

另外,当我对 node_modules 文件夹执行 ls 操作时,我发现符号链接定向到我的包文件夹,而不是全局 npm 的 node_modules 文件夹。

我错过了什么吗?我认为这正是 npm 链接与 npm i ../path/to/my/package 不同的原因。

谢谢你,美好的一天

npm npm-link

7
推荐指数
1
解决办法
2630
查看次数