- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 NestJS 应用程序作为 Angular/Nx 工作区的一部分。
在 nest 应用程序中,我使用 nestjs-console
来运行命令(例如加载夹具数据)。
根据 nestjs-console docs这涉及:
console.ts
文件"console:dev": "ts-node --project apps/api/tsconfig.console.json apps/api/src/console.ts"
npm run console:dev -- --help
现在我已经使用 Nx 创建了一个 lib of shared code应用程序之间。
这适用于 Angular CLI 下的命令(test
;serve
等),但是 nestjs-console 任务失败是可以理解的:
Error: Cannot find module '@my-workspace/my-lib'
所以问题是如何将 nestjs-console 命令置于 Angular CLI 的控制之下(或以其他方式运行 NestJS 命令)。
我觉得应该可以向 angular.json
添加自定义任务,它使用现有的构建器,然后以某种方式指向控制台命令。 (我觉得我不需要 custom builder ,但我可能错了)。
我卡住了,因为我对这个环境不是很熟悉,而且angular.json workspace config .
感谢任何帮助,无论是:
编辑
我尝试使用 NestJS Application Context直接,(而不是通过 nestjs-console
)并根据这个 blog post使用 ts-node
运行它。
这和以前有同样的问题。我相信这个问题与 ts-node 如何处理 tsconfg 中的路径有关。
如果我更改共享代码的导入方式:
import { HeadwordDto } from '@my-workspace/my-lib';
收件人:
import { HeadwordDto } from '../../../../../../libs/my-lib/src';
然后一切正常,但 tslint 提示“库导入必须以 @my-workspace/(nx-enforce-module-boundaries) 开头。”我可以看出这如何打败 Nx 的观点。
或者,处理我认为的 paths issue看起来有点毛茸茸,涉及像tspath这样的工具或 module-alias .它也没有受益于 Nx 优点。
我现在添加了一个新的 Architect target到 angular.json,它就像 build
目标(使用 @nrwl/node:build
构建器),除了构建所需的应用程序上下文:
"build-console": {
"builder": "@nrwl/node:build",
"options": {
"main": "apps/api/src/console.ts", // build console application context
"outputPath": "different/output/path", // can run alongside app
...
}
},
构建之后它可以是run via node :
node ./different/output/path/main.js –help
编辑 2
在上述方法的基础上,还可以使用 execute builder在单独的终端窗口中持续构建控制台应用程序上下文:
"serve-console": {
"builder": "@nrwl/node:execute",
"options": {
"buildTarget": "api:build-console",
"port": 7778,
"args": ["--help"]
}
},
从这里我猜下一步可能是将控制台应用程序上下文制作成一个单独的应用程序,在 angular.json 中有它自己的项目,然后只需要拉入所需的代码。开始觉得 Nx 团队领先我大约 58 步 ;-)
不确定这是否是最佳解决方案,但它确实有效。和以前一样,任何建议表示赞赏!
编辑 3
要对此进行扩展,以回应@Digitrance 的问题。我最终使用的方法是:
angular.json
{
...
"api": {
...
"architect": {
...
"build-console": {
"builder": "@nrwl/node:build",
"options": {
"outputPath": "dist/apps/api-console",
"main": "apps/api/src/console.ts",
"tsConfig": "apps/api/tsconfig.app.json"
}
},
"serve-console": {
"builder": "@nrwl/node:execute",
"options": {
"buildTarget": "api:build-console",
"port": 7778,
"args": ["--help"]
}
},
/my-repo/apps/api/src/console.ts
import { BootstrapConsole } from 'nestjs-console';
import { AppModule } from './app/app.module';
const bootstrap = new BootstrapConsole({
module: AppModule,
useDecorators: true
});
bootstrap.init().then(async app => {
try {
await app.init();
await bootstrap.boot();
process.exit(0);
} catch (e) {
console.error('Error', e);
process.exit(1);
}
});
然后命令运行控制台:
ng run api:build-console
ng run api:serve-console
node ./dist/apps/api-console/main.js --help
node ./dist/apps/api-console/main.js myCommand
(请注意,api
是我的应用程序的名称)。
希望这对您有所帮助!
最佳答案
和您一样,我在设置时遇到了麻烦。我的错误归结为语法错误,根据 ts-node github 上的一些问题,这与节点无法正确读取导入有关,因为它是 commonjs 语法。我的解决方案如下:
"compilerOptions"
中包含 "module": "commonjs"
。除此之外,我复制了 tsconfig.app.json。"console:dev": "ts-node --project apps/api/tsconfig.console.json -r tsconfig-paths/register apps/api/src/console.ts"
到你的脚本。希望对您或其他人有所帮助。
关于angular - 如何在 Angular/nx 工作空间的上下文中运行 nestjs-console 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813513/
nx affected:lint --fix有什么区别和 nx format:write ? 不同的文章似乎确实提到代码应该格式化为 nx format:write命令,但它似乎并不完全依赖于 ESL
我正在尝试将一个新的 util 库添加到我的 Nx mono 存储库中。我用谷歌搜索并从 www.nx.dev 找到以下命令: nx generate @nrwl/nest:library util/
是否有一些关于 create-nx-workspace 所采用参数的文档?我想构建一个可以复制和粘贴的 oneliner 来设置新的工作区,而无需提出任何交互式问题。到目前为止我已经 npx crea
我有一个由 Nx CLI 生成的应用程序.我可以使用命令 nx test myApp 使用 Jest 运行此应用程序的测试.这工作正常。但是,我想使用 Jest 的 "watch mode" .在运行
我一直在研究 nrwl 扩展,它们看起来很棒。但是,当我按照他们的 Workspace Specific Schematics 教程进行操作时,最后一步没有显示要运行的命令。你能告诉我如何运行我创建的
NX 最强大的功能之一是能够查看哪些 Angular 应用程序受到最近更改的影响。 但是,为了使其发挥作用documentation告诉您需要: 提供两次提交的 SHA:npm run apps:af
我们想在库和我们的应用程序中使用 @emotion/react 中的 useTheme 我们正在使用:-react-native-web-nx 单体仓库- native react 这是我们的结构
所以我将 Angular 与 NX 一起使用,并且我有以下组 books 和 cars。对于这两个组,我想创建一个带有表格的 overview 库来查看书籍或汽车。 所以我在 libs/books/o
我有一个 Nx monorepo ( https://nx.dev )。 它有一个带有 Nx 缓存的文件夹 (./node_modules/.cache/nx/)。 它现在的大小超过 3GB。 是否有
您能否解释一下 NX 标志是什么以及它是如何工作的(请具有技术性)? 最佳答案 它在虚拟内存系统和 TLB(CPU 用于解析虚拟内存映射的结构)中标记一个内存页面不可执行。如果要从这样的页面执行任何程
我正在使用 nx.dev 构建和测试 Web 应用程序。workspace.json包含构建和测试应用程序的脚本,但是构建阶段仍然需要对一些文件进行预处理。 有什么方法可以添加预构建步骤(即指定外部
有人可以向我解释如何在硬件不提供的 32 位 x86 等平台上模拟 NX 位吗?我会很高兴解释它的模拟方式的基础知识,因为我根本无法想象它是如何实现的。提前致谢。 最佳答案 您可能想了解 Exec S
假设我有一个由这个矩阵定义的图: test = np.array([[0, 0, 4, 0], [0, 0, 6, 0], [4,
import networkx as nx G = nx.DiGraph() G.add_edge("A: test", 'B: test') nx.write_dot(G,'so.dot') 产生
想要从 nx 10 工作区移动到 12 而不离开角度 10。 nx migrate latest 但是升级也会默认升级 angular。 我搜索了 https://nx.dev/previous/an
我创建了一个带有一些边的图: import networkx as nx g = nx.Graph() g.add_edge(1, 2) g.add_edge(2, 6) g.add_edge(3,
因此考虑一个每条边都是双向的格子。现在我有一些代码可以删除一些边,以减少双向边的百分比并增加单向边的百分比: import networkx as nx import matplotlib.pyplo
在 Nrwl/Nx 工作区中似乎只有一个 package.json 文件。现在,如果我们有多个应用程序,每个应用程序都依赖于不同的包,那么我们必须将所有这些包包含在单个 package.json 文件
我有一个 Nrwl Nx 存储库,其中包含不同的应用程序(angular、nodejs 和 express)和内部共享库。 该存储库是使用 nx cli 创建的我想为生产制造其中之一 express应
我有一个自述文件,其中包含文件夹的文档、包含的库以及如何使用它们。 自述文件不是任何库的一部分,因此 nx-lint 会引发此错误: NX ERROR The following file(s
我是一名优秀的程序员,十分优秀!