在程序sudo npm link
包的目录中使用节点包时,如何在完成开发后卸载程序包?
npm link
将软件包安装为系统的全局软件包位置('/ usr/local/lib`)中的符号链接.这使您可以在开发包时对其进行测试,而无需一遍又一遍地安装它.
我需要运行哪个npm命令才能再次删除链接?
我正在开发一个用于反应原生的按钮ui包.我尝试构建一个示例项目来测试此按钮.目录结构如下:
my-button/
package.json
index.js
example/
package.json
index.js
Run Code Online (Sandbox Code Playgroud)
我尝试使用npm link
:
cd my-button
npm link
cd example
npm link my-button
Run Code Online (Sandbox Code Playgroud)
在example/node_modules/
我可以看到我的按钮符号链接,VSCode也可以在我的按钮包中自动完成功能.
但执行示例应用程序将显示错误:
Unable to resolve module my-button ...
Module does not exist in the module map or in these directories: ...
Run Code Online (Sandbox Code Playgroud)
但错误消息中的路径是正确的.
不知道我错在哪里,或者在React-Native中有什么特殊的方式来处理链接本地依赖?
我也试过了npm install file:../.
.它以这种方式工作正常,但在example/
编辑我的按钮后不容易更新依赖.
我以为我理解了它们之间的区别
npm link x
Run Code Online (Sandbox Code Playgroud)
和
npm install /local/path/to/x
Run Code Online (Sandbox Code Playgroud)
最初我以为前者为x创建了一个符号链接,而后者在你的项目中安装了一个单独的x副本,而不是对它进行符号链接.
然而,我最近注意到我的原始印象是错误的,他们似乎都使用符号链接 - 所以这两者之间有什么区别,它是什么?
我目前正在编写一个名为eformless
我已经使用CRA创建了一个名为 的目录sandbox
,我在其中链接了包。
当尝试使用我正在尝试测试的链接包启动沙箱反应应用程序时,我不断收到以下错误:
\n// inside my \'sandbox\' App.tsx\nimport React from \'react\'\nimport { useField } from \'eformless\'\n\nconst App = () => {\n const [test, handleChange] = useField(\'testing\')\n return (\n <input type="text" value={test.value} onChange={handleChange} />\n )\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n\n错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一:
\n\n
\n- 您的 React 和渲染器版本可能不匹配(例如 React DOM)
\n- 你可能违反了 Hooks 规则
\n- 您可能在同一应用中拥有多个 React 副本\n请参阅因 stackoverflow ToS 而更改的链接,了解有关如何调试和修复此问题的提示。
\n
这个问题似乎指向我的库,我在其中编写了一个自定义钩子,该钩子使用从 React …
我有个问题。
我正在尝试使用 ng-cli 创建一个 Angular 8 库,但我无法使用npm link
.
我试图在我的 angular.json 上添加这个:
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"preserveSymlinks": true,
"tsConfig": "projects/button/tsconfig.lib.json",
"project": "projects/button/ng-package.json"
}
},
Run Code Online (Sandbox Code Playgroud)
但得到:
"Schema validation failed with the following errors: Data path ""
should NOT have additional properties(preserveSymlinks)."
Run Code Online (Sandbox Code Playgroud)
我发现它不适用于图书馆。
然后我尝试将其添加到我的 tsconfig.lib.json 中:
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true,
"preserveSymlinks": true
}
Run Code Online (Sandbox Code Playgroud)
什么也没发生。
我在这里搜索了一个解决方案,但找不到类似的东西。
我怎样才能做到?
谢谢!
我在链接本地包时遇到奇怪的错误:
我有 2 个包裹(我们称它们为 A 和 B)。当我将其中之一链接到我的项目时,npm link A
它会按预期工作。但后来我尝试使用链接另一个链接,它被链接了,但Anpm link B
的链接消失了。我没有收到错误消息,仅收到以下错误消息:
5秒内添加了5个包,删除了5个包,更改了2个包,审计了121个包
3个套餐正在寻求资金运行
npm fund
详情
以前这工作没有任何问题,但今天我更新了一些依赖项npm update
。当我尝试重新链接我的包时,出现了问题。
也许值得一提的是,包 B 也链接包 A。
编辑:使用解决它npm link A B
我设置了一个多包项目,其中有一个依赖于 TypeScript 库的 JavaScript 包。最初我安装了 Sinopia 并且每次对它进行更改时都会重新安装该库。然后我看到npm link
并认为它会更容易开发。不幸的是,当我链接库(使用npm link ../typescript-package
)并构建时,它给出了一个错误:
ERROR in ../typescript-package/dist/index.js
Module build failed: Error: No ESLint configuration found.
Run Code Online (Sandbox Code Playgroud)
由于它们是单独的包,我不太确定为什么 Webpack 试图将 eslint 应用于这个包。这是我的webpack.common.js
文件(使用合并,开发与生产配置无关紧要):
// webpack.common.js
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const babelOptions = {
presets: ['react', 'es2015', 'stage-0'],
sourceMaps: true,
retainLines: true,
};
module.exports = {
entry: {
solver: './source/index.jsx',
},
output: {
path: `${__dirname}/dist`,
filename: '[name].js',
publicPath: '/dist/',
},
resolve: {
modules: ['source', 'node_modules/'],
extensions: ['.js', '.jsx', '/index.jsx', '.json', '.ts', '/index.ts', …
Run Code Online (Sandbox Code Playgroud) 那么,到底是什么问题呢?我有两个 React 和 ReactDOM 实例为所提供的applicationB
. 我在诊断问题空间时被误导了,因此下面提出的问题/呼吁有点全面。应该拿走什么,希望它可以帮助处于这个位置的其他人:
该错误Uncaught TypeError: Cannot read properties of null (reading 'useEffect')
与将两个 React 副本加载到applicationB
. 但为什么有两份呢?
applicationB
是 Remix 应用程序。packageA
是一个在其构建链中使用 esbuild 的 React 组件。Remix
通过调查,我发现对以下方面的支持存在差异esbuild
:
esbuild
添加了对 React 17 JSX Transform 的支持。Remix
可能不知道此更新,并通过使用React 导入的垫片esbuild
来解决对 JSX 自动运行时缺乏支持的问题。这导致了问题的提出:
Remix
识别出垫片的故障并在 v1.7.0 版本中包含了解决方案。在applicationB …
我已经搜索了其他问题,例如这个问题,但它们似乎都是关于本地人npm link
因其他原因停止工作而不是我的。我认为这是一个常见的用例问题,所以如果我在有条不紊地做一些错误的事情,我很乐意就我应该如何提出建议件事。
原则上,我有一个我正在处理的私有 npm 模块,名为@organisation/module
. 在本地工作时,我将运行npm link
它,并在我的“宿主”项目中使用它作为npm link @organisation/module
- 这一切都适用于热重载等。我也将其导入为import module from '@organisation/module
.
但是,由于我也想@organisation/module
不时将我的本地更改发布到 npm (as ),对于构建测试和生产代码,我需要运行npm install @organisation/module
在宿主项目上。
这似乎打破了npm link
我之前设置的隐式......我假设主要是因为它们是相同的名称,并且 npm 更喜欢install
一个link
?
当我想再次进行实时本地更改时,我目前可以使其正常工作的唯一方法是通过 npm uninstall @organisation/module
然后重新链接它。
有没有办法让发布的模块保持安装(以避免粗心的错误,比如忘记重新安装它进行构建测试),但总是偏爱本地的链接实例?
有没有办法限制npm link
创建符号链接只指向./dist
?
我很挣扎,因为我想在发布之前在本地测试我的库(反应组件)。
在我的package.json
我已经包括主要(入口点):
"main": "./dist/index.js"
Run Code Online (Sandbox Code Playgroud)
但是当我运行npm link
它时仍然链接到具有node_modules
等等的父文件夹。这导致了问题,因为现在我安装了 2 个 React 应用程序。
我想到了一种排除方法,node_modules
但我什至找不到办法做到这一点。
npm-link ×10
npm ×9
node.js ×5
reactjs ×3
angular ×1
angular8 ×1
esbuild ×1
eslint ×1
javascript ×1
npm-install ×1
react-hooks ×1
react-native ×1
remix ×1
typescript ×1