标签: npm-link

如何配置eslint-loader到lint NPM链接模块?

我正在开发一个大型JavaScript项目,该项目分为几个子模块,每个子模块都有自己的git存储库和Node依赖项.我们还有一个入口点模块App,它具有Webpack和ESLint配置.

由于大多数开发人员会相互协作处理几个模块,而不是等待每个模块发布,我们会使用npm link子模块连接到App模块,因此在开发期间对子模块的更改将立即生效对App模块可见.

我们遇到的问题eslint-loader不仅是App模块源代码,还有链接的所有子模块npm link.在lint子模块的代码时,eslint-loader无法解析子模块的本地路径.

我有办法解决这个问题吗?

以下是项目的示例结构:

--- App
 |    src
 |    node_modules
 |- Sub_module_x
 |    src
 |    node_modules
 |- Sub_module_y
      src
      node_modules
Run Code Online (Sandbox Code Playgroud)

以下是eslint-loader的相关部分webpack.config.js:

module: {
    preloaders: [
        {
            test: /\.js$/,
            loader: 'eslint-loader',
            exclude: [
                path.resolve(__dirname, 'node_modules', 'Sub_module_x'), // If this is commented, the loader would lint Sub_module_x, but cannot resolve any files which import other files
                /node_modules/
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

javascript npm eslint webpack npm-link

7
推荐指数
0
解决办法
1049
查看次数

npm链接不适用于angular-cli创建的项目

我使用创建了一个项目angular-cli。有一个AppModuleAppComponent我想在其他角度应用程序中使用AppModule它及其组件(AppComponent)。所以我创建了index.ts文件并导出了AppModuleAppComponent

export {AppModule} from './src/app/app.module';
export {AppComponent} from './src/app/app.component';
Run Code Online (Sandbox Code Playgroud)

然后使用创建本地链接,npm link并使用package.json中定义的名称创建一个链接。

现在在我要使用此导出模块的其他项目中运行

npm link project-name
Run Code Online (Sandbox Code Playgroud)

链接已成功完成。我试过了

import { AppModule as AModule} from 'my-components';
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为未解决引用,因此webpack无法编译AppModule文件。在SystemJs中,我们在systemjs.config.js文件中定义了此映射,但是没有配置文件。

我该如何解决?

还有其他重用本地模块的方法吗?

javascript webpack angular-cli npm-link angular

7
推荐指数
3
解决办法
3866
查看次数

使用本地项目的"npm install"意外行为

脚本

  • 我在用 npm 5.8.0
  • 我有一个ProjectA和一个ProjectB
  • ProjectB 是一种依赖 ProjectA
  • 这两个项目都捆绑在一起并通过Webpack运行(如果需要,我可以提供我的配置).

出于开发目的,我ProjectBProjectA的package.json中引用了"projectB": "file:../projectB".基本上我需要的唯一文件是在libWebpack的输出文件夹中.

问题

如果我使用上面的配置安装此依赖项,npm将把整个文件ProjectB夹安装到node_modules中.它将包含所有projectB的node_modules,配置文件,src文件夹等.

除了这不能成为预期的行为之外,这会导致错误.例如,某些已安装的@types会抛出错误,因为它们被视为重复.@types和其他包来自ProjectAProjectB似乎"碰撞".这些软件包是作为参考的"dependencies"两个ProjectAProjectB居多.

我尝试了什么

npm链接

如果我使用npm链接,则会出现相同的(见上文)行为.整个文件夹将安装到ProjectAnode_modules中.

npm包

我实际上有一个-file 可能很重要.所以,当我使用一个文件生成.如果我然后通过一切正常安装.我认为这确实考虑了-file..npmignoreProjectBnpm packprojectB.tgzProjectB"projectB": "file:../projectB.tgz"npm pack.npmignore

我对这个解决方案的问题在于,我不仅需要在ProjectB每次应用更改时进行构建,而且还需要构建npm pack.

删除ProjectBnode_modules

我想这是最愚蠢的解决方法.如果我再次引用ProjectBvia "projectB": "file:../projectB"但在构建之后删除它的node_modules,则它们在安装后不会出现.因此,我没有任何例外.

我想这不是一个有效的解决方案,因为仍然ProjectB安装整个文件夹.

这里的最佳做法是什么?什么是合理的constallation …

npm npm-link

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

如何使用 npm 链接修复 Angular 库中的“未找到模块”错误?

我正在尝试为 Javascript 库构建一个 Angular 包装器,但出现“找不到模块”错误。Javascript 库正在开发中,尚未发布到 NPM,所以我使用的是 npm-link,这可能会导致问题,但我不确定。我的 Angular 版本是 8.2.2。

Javascript 源代码库

源库/index.js:

var sourcelib = (function () {
    var doSomething = function() {
    };
    return {
        doSomething: doSomething
    };
})();
export default sourcelib;
Run Code Online (Sandbox Code Playgroud)

sourcelib目录还包含的package.jsonREADME.md文件。如您所料,创建了一个 npm-link:

cd sourcelib
npm link
Run Code Online (Sandbox Code Playgroud)

角度包装器

以下是我正在执行以创建 Angular 工作区、库和测试应用程序的 Angular CLI 命令:

ng new app-test --create-application=false
cd app-test
ng generate library testlib
ng generate application testlib-app
Run Code Online (Sandbox Code Playgroud)

现在将testlib链接到 Javascript 库:

cd projects/testlib
npm link sourcelib
Run Code Online (Sandbox Code Playgroud)

testlib …

javascript npm typescript npm-link angular

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

一个项目中存在多个 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
查看次数

npm链接,没有链接devDependencies

看来,当我运行时npm link,它将全局安装项目,似乎用它安装devDependencies.

有没有办法在没有devDependencies的情况下运行npm链接,也许带有--only=production标志?

node.js npm npm-link

6
推荐指数
2
解决办法
2731
查看次数

PHP Composer 是否有相当于 npm 链接的东西?

当我开发 JavaScript 模块时,我可以使用npm link在使用该模块作为依赖项的本地项目中安装我的本地开发版本。这是一个很棒的工作流程。

它不是就地开发,我认为这不如 TDD 好,但我认为它是进行集成测试和手动 QA 的一种更简单的方法。

在 Composer 中,如果可能的话,我可以强制使用 git 安装软件包,这样我就可以就地开发。不错,但不是很好。

问题的简短版本:我可以告诉 Composer 从本地文件系统中的 git 存储库/文件集临时安装依赖项,并从 Composer CLI 控制链接吗?

php dependency-management npm composer-php npm-link

6
推荐指数
1
解决办法
2769
查看次数

带有 npm 链接的样式组件导致错误:“试图插入新的样式标签,但给定的节点已卸载”

我创建了自己的 npm 包(使用 nwb 创建),其中使用了样式组件。在我的消费应用程序中,我还使用了样式组件。

问题是。通过 npm install. 但是,当npm link进入其他一些 react-router 路由时使用以下错误消息:

Error: Trying to insert a new style tag, but the given Node is unmounted!

* Are you using a custom target that isn't mounted?
* Does your document not have a valid head element?
* Have you accidentally removed a style tag manually?
Run Code Online (Sandbox Code Playgroud)

在我的 npm 包中,我将样式组件设置为对等依赖项和 devDependency,如下所示:

...
"peerDependencies": {
  "react": "16.x",
  "styled-components": "^3.4.4"
},
"devDependencies": {
  "karma-junit-reporter": "^1.2.0",
  "nwb": "0.23.x",
  "react": "^16.4.2",
  "react-dom": …
Run Code Online (Sandbox Code Playgroud)

npm reactjs npm-link styled-components

6
推荐指数
1
解决办法
3931
查看次数

ReactJS:导入符号链接组件错误:模块解析失败:意外的标记:您可能需要适当的加载器来处理此文件类型

我正在编写一个 React 组件库,我想在其他项目中使用它,而无需太多开销(bit、create-react-library、generact 等)并且无需发布。我想用npm install ../shared_lib它作为符号链接添加到我的项目中/node_modules。此命令将符号链接添加到项目node_modules。在我的shared_lib中我只是进行了一个export default测试<div></div>

import React from 'react';

const TryTest = function() {
  return (
    <div>
      TryTest
    </div>
  )
}

export default TryTest;
Run Code Online (Sandbox Code Playgroud)

当我将组件导入我的工作项目时,我面临的问题是以下错误:

import TryTest from 'shared_lib';
Run Code Online (Sandbox Code Playgroud)

错误:

ERROR in ../shared_lib/src/index.js 6:4
Module parse failed: Unexpected token (6:4)
You may need an appropriate loader to handle this file type.
| const TryTest = function() {
|   return (
>     <div>
|       TryTest
|     </div>
 @ ./src/App.js 27:0-33 …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack npm-link

6
推荐指数
1
解决办法
2462
查看次数

将 npm 链接与利用 Nuxt3 的模块一起使用会出现错误

我想使用 Nuxt 3 组件创建一个 npm 模块。为此,我按以下方式定义了“nuxt.js”文件。

import { join } from 'path'
import { defineNuxtModule} from '@nuxt/kit'

export default defineNuxtModule({
    hooks: {
        'components:dirs'(dirs){
            dirs.push({
                path: join(__dirname, 'components'),
                prefix: 'my-name'
            })
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

当我发布模块然后运行 ​​npm install my-module 时,没有问题。我可以使用 Nuxt 3 组件。但是,由于我还想测试一切是否按预期工作,因此我想使用 npm link 来测试模块而不发布它。

因此,我在两个目录中执行“npm link”,然后执行“npm link 'my-module'”。该模块已正确链接,我可以在我的“node-modules”目录中找到它。但是当运行“npm run dev”时,我收到以下错误:

错误无法启动 nuxt:找不到模块“@nuxt/kit”07:39:52
需要堆栈:
- /path/my-module/nuxt.js

  需要堆栈:
  - /path/my-module/nuxt.js
  在 Function.Module._resolveFilename (内部/modules/cjs/loader.js:902:15)
  在 Function.resolve (内部/模块/cjs/helpers.js:107:19)
  在 _resolve (node_modules/jiti/dist/jiti.js:1:108226)
  在 jiti (node_modules/jiti/dist/jiti.js:1:110413)
  在/path/my-module/nuxt.js:2:12
  在 jiti (node_modules/jiti/dist/jiti.js:1:112282)
  在 requireModule (node_modules/@nuxt/kit/dist/index.mjs:295:26)
  在 normalizeModule (node_modules/@nuxt/kit/dist/index.mjs:448:53) …

node.js npm npm-link nuxtjs3

6
推荐指数
0
解决办法
484
查看次数