问题标签 [nx.dev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - NX 为一个项目创建依赖项
我正在使用 NX 来管理我的项目,我有 3 个 Angular 应用程序。我可以为每个项目创建一个 packge.json 文件吗?我不希望所有项目都携带彼此的部门。
例如,一个项目需要一些 UI 库,而另一个则不需要。
这种用例的最佳实践是什么?谢谢
Clearfaction - 我不想使用不同的版本,我想在其中一个项目中使用额外的库。例如,一个项目需要 moment.js 其余项目都不需要它
node.js - 来自 webpack 的 ERR_REQUIRE_ESM 导入 ESM 包
我正在构建一个应用程序,使用Nx进行模块化,使用Geckos进行服务器部分。使用 Nx 的 Node 默认 Webpack 5 配置,我在运行应用程序时收到此错误:
以下是重现的步骤:
在这个阶段,默认的 Express 应用程序构建并运行。
现在我将apps/geckos-server-app/src/main.ts
README 中的内容替换为 Geckos 服务器示例:
...并使用安装 geckos 服务器包
好的,是时候再次运行它了:
我测试了很多 Webpack 配置覆盖并type: "module"
在 package.json 中使用,但无济于事。无论我更改什么 webpack 设置,输出 main.js 看起来都基本相同。我尝试在应用程序的 webpack 覆盖配置中更改的内容:
控制台登录配置验证脚本是否正在运行。
当我在转译输出中手动更改为时,该应用程序可以工作require
,import
但这不是一个可持续的解决方案。
我怀疑这个错误与 Geckos 是一个 ESM 包有关,而 Webpack 只使用require
而不是import
它应该使用的,但我找不到任何改变这种行为的方法。
有任何想法吗?
- 节点版本 16.13.0
- Nx 版本 13.4.1
- Webpack(Nx 的传递 dep):5.65.0
typescript - config(npm) 抛出未找到配置属性,但 getConfigSources 方法记录正确的对象
我正在尝试将config
包集成到我的 nx.dev 打字稿项目中。我config
在根级别有一个目录,其中包含 default.json
在我index.ts
尝试
并获得以下信息:
它到处都说这就是我需要连接它但get
函数抛出的所有内容。
eslint - 如何配置 WebStorm 以使用 nx lint 而不是 ESLint?
在使用 WebStorm(可能还有其他 JetBrains IDE)处理 nx 项目时,我不断收到此错误:
错误:加载规则“@typescript-eslint/await-thenable”时出错:您使用了需要生成 parserServices 的规则。因此,您必须为 @typescript-eslint/parser 的“parserOptions.project”属性提供一个值。
我确实parserOptions.project
在libs/mylibrary/.eslintrs.json
:
npx eslint ./libs/mylibrary
当我通过或通过 nx ( )手动运行 ESLint 时,该错误不会重现nx lint mylibrary
。
知道如何配置 WebStorm 以使其正常工作nx lint
吗?
reactjs - 在可发布的 NX React 库中捆绑 CSS
我创建了一个包含一些自定义样式的可发布 React 库。当我在 NX 项目的演示应用程序中使用这个库(组件)时,我不需要包含任何 CSS 样式——它们就可以工作。
现在我将这个库发布到我的私有 NPM 注册表中,我想在单独的应用程序中使用这个包 - 突然我的 CSS 文件没有自动包含,我需要包含 JS 文件和 CSS 文件。
有没有办法将 CSS 文件自动捆绑到构建中?所以在我的消费应用程序中,我所要做的就是import {MyComponent} from 'my-component';
并且还会包含 CSS 文件?
谢谢
node.js - 将现有的 NodeJs(node、Express、monodb、...)项目添加到现有的 NX monorepo (Angular)
有没有人体验过如何将现有的 NodeJS API 添加到现有的(Angular)Nx Monrepo?
不幸的是,手册对我帮助不大 https://nx.dev/migration/manual
angular - 如何将 dotenv-webpack 与 angular 和 nx 一起使用
我想.env
在我的应用程序中配置一个文件,以便我可以从 codebuild 定义我的环境变量。我在 nx 工作区中有一个角度应用程序。我正在覆盖我的 webpack 以配置dotenv-webpack
,但是当我尝试使用构建我的应用程序时出现此错误nx build --prod
不知道我做错了什么。
这是我的网络包:
这是 angular.json 上的应用程序配置:
我的 .env 文件:
还有我的 environment.prod.ts:
有什么遗漏吗?
javascript - 为什么 Nx 可发布包导入依赖于可发布包的外部依赖项
我使用 Nx 作为我的 monorepo 管理工具。当我编写两个这样的可发布库时:
1.@测试/父母
产生于nx generate @nrwl/node:library --name=parent --buildable --importPath=@test/parent --publishable
2.@测试/孩子
产生于nx generate @nrwl/node:library --name=child --buildable --importPath=@test/child --publishable
我想发布@test/child
包。所以我建造它们。但是在@test/child
dist/package.json 文件中。我发现:
@test/child
包含的@test/parent
依赖项moment
。
我很困惑为什么会这样。我认为moment
is@test/parent
的依赖,所以它不应该包含在@test/child
' 的依赖中。
angular - Nx build - 另一个 id 为 xxx 的进程当前正在运行 ngcc
我有一个包含 2 个项目的 Nx monorepo。当我在本地构建这些项目时,一切都按预期工作,但是当我尝试在构建服务器上构建相同的项目时,我得到了错误
这可能是由 command 引起的nx affected:build --all --parallel --configuration=production
。这会并行运行所有构建,以某种方式同时运行两个构建ngcc
,从而锁定目录中的某些文件node_modules
。我很清楚。但问题是我已经尝试了几乎所有建议的修复程序,但警告仍然存在,显着减慢了构建速度,甚至在某些情况下使其失败。
版本
- Angular:13.2.x(它在 v12.x 上给出了同样的错误)
- Nx:13.8.x
- 节点:v14.17.x
- 管道:Bitbucket 管道
将 ngcc 添加到安装后
根据一些答案(here、here、here、here等等),最好的解决方法是添加ngcc --properties es2015 browser module main
甚至添加ngcc --properties es2015 browser module main --create-ivy-entry-points --first-only
到postinstall
package.json 中。由于 Nx V12,这是在通过 Nx 生成新的 monorepo 时自动添加的,但似乎没有修复构建服务器上的消息(本地从未有任何问题)
( "postinstall": "node ./decorate-angular-cli.js && ngcc --properties es2015 browser module main",
)
删除锁定文件
我试图在构建开始之前删除锁定文件,因为我认为可能postinstall
会创建锁定文件,但不知何故没有时间删除它。但是我所有的尝试都表明在构建开始之前没有锁定文件。
脚本:
总是导致no lock file
缓存
node_modules 缓存在构建服务器中,因此可以在单独的管道步骤中使用。脚本如下:
每个步骤都使用在-stepnode
上创建的缓存。install
我无法验证 ngcc 结果是否存储在缓存中,但是由于在node_modules
安装步骤之后整个缓存都被缓存并且 ngcc 结果被添加到 node_modules 我猜它被存储了。
由于以上都没有修复警告,我是否缺少某些东西,或者这只是 ngcc 现在的工作方式?