我有一个基本的create-react-appTypeScript 项目 ( client)。只是目录,我有一个server和一个shared文件夹。在shared文件夹内,我有许多在和之间共享的interfaces 和s 。enumserverclient
我希望将此shared文件夹链接到client和server包。
首先,我转到shared并运行$ yarn link,然后$ yarn link shared从client和server文件夹中运行。
服务器非常高兴,而且大多数情况下客户端也是如此。但是,一旦我使用中目录中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) 我学习 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 项目。任何想法?请建议我需要检查和做什么?
我有一个内部项目,我想将命令链接到文件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-name在cmd.npm link在第二步中也必须执行.然后cli-name将在控制台中作为命令使用.我甚至试过在其中使用with postinstall脚本,但后来我得到了一个循环......npmnpm link
有没有办法一步到位npm install?
使用 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 的值
对于我的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上),则它没有正确的版本控制集成(例如,我无法检出)。
非常感谢!
我正在为我的常用组件开发一个 React 库。在我的根文件夹中有:
\n\nsrc/包含我的库的文件夹。构建时,捆绑文件(ES、CJS 和 UMD)位于该dist/文件夹中。parcel捆绑应用程序,其中有一个独立的package.json. 在此package.json,myLib 处于依赖关系中,我链接了它。当我想在工作区中使用 myLib 时,我会像这样导入它:import { Button } from \'myLib\'。
在这里,一切似乎都还好。但是在一个组件中我使用了一个钩子并且出现了这个错误:
\n\nUncaught 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) 我正在使用 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'
yarn我知道和之间存在细微的差别npm。现在我有一个用yarn管理的库和一个用npm管理的应用程序。
如果我通过yarn在我的lib目录中创建一个链接的pkg并通过npm在我的其他目录中应用它,它应该可以正常工作吗?或者我应该预料到这个设置会出现问题吗?如果是,可能会出现哪些问题以及如何避免它们(除了将两个项目转交给同一经理之外)
~/the-lib$ yarn link
~/app$ npm link @the/lib
Run Code Online (Sandbox Code Playgroud) 我正在尝试调试 NodeJS 应用程序及其与npm link.
结构如下:
/root/package-a # typescript package
/root/package-b # another typescript package
/root/app # NodeJS application
Run Code Online (Sandbox Code Playgroud)
我已将包链接到应用程序,如下所示:
npm link每个包装内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
我正在努力使用 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-link ×10
npm ×6
reactjs ×3
typescript ×3
javascript ×2
node.js ×2
npm-install ×2
package.json ×2
webpack ×2
angular ×1
babel-loader ×1
breakpoints ×1
node-modules ×1
source-maps ×1
symlink ×1
yarn-link ×1
yarnpkg ×1