我们使用gitlab ci和共享运行器来进行持续集成.对于每个构建,运动员下载大量的maven工件.
有没有办法配置gitlab ci来缓存这些工件,这样我们可以通过阻止一遍又一遍地下载相同的工件来加快构建过程?
我检查了一个使用纱线代替npm作为构建工具的仓库.
在package.json中,它定义了处理多个子项目的工作空间:
{
"workspaces": [
"packages/*"
],
"dependencies": [],
"devDependencies": [
// long list
]
}
Run Code Online (Sandbox Code Playgroud)
因此,根package.json
不包含任何运行时依赖性.只是packages/*/package.json
包含那些.
要编译(并以开发模式启动),我会:
yarn install
yarn start
Run Code Online (Sandbox Code Playgroud)
我没有找到任何文档,这workspaces
也是npm识别和正确使用的文档.
有没有办法让它与npm一起工作?
npm link 和yarn link 都“不是最好的”。我经常遇到他们的问题。现在我已经了解了 pnpm 及其本地存储。我想知道 pnpm 是否可以帮助我解决以下情况下的 npm 链接问题:
我有两个项目位于不同的存储库中,因此不在一个工作区中。一个是“app”,另一个是应用程序中使用的“lib”。现在,我想以某种方式构建库并在应用程序中使用新的构建,而不将其发布到全局 npm 注册表。这就是我经常使用纱线链接的原因。但是,我想知道 pnpm 是否为我提供了一种“发布到本地商店”的方法。
所以我的问题是:是否可以将构建包发布到本地 pnpm 存储库,以便“app”中的“pnpm install lib”将成功安装新构建的“lib”包?
yarn
我知道和之间存在细微的差别npm
。现在我有一个用yarn管理的库和一个用npm管理的应用程序。
如果我通过yarn在我的lib目录中创建一个链接的pkg并通过npm在我的其他目录中应用它,它应该可以正常工作吗?或者我应该预料到这个设置会出现问题吗?如果是,可能会出现哪些问题以及如何避免它们(除了将两个项目转交给同一经理之外)
~/the-lib$ yarn link
~/app$ npm link @the/lib
Run Code Online (Sandbox Code Playgroud) 考虑以下用例:
我正在我的本地分支上工作,而重构已在主分支上完成.现在,一些文件(类)已重命名和/或移动到新位置.合并时,由于缺少类,我会收到大量的导入错误.
--A--B--C--D--E-- (master)
\ \
F--G--H--I--J (topic)
Run Code Online (Sandbox Code Playgroud)
在A
我使用的旧名称中F--G--H--I
.
在B--C--D--E
重构的文件中导致新的文件名E
.这包括链式重命名
B: path/to/File.java
-> C: path/to/BetterName.java
-> D: better/package/BetterName.java
-> E: final/package/FinalName.java
Run Code Online (Sandbox Code Playgroud)
J
由于我的分支上缺少重构,现在将结果与许多(编译)错误合并.(因为我仍然提到path.to.File
而不是final.package.FinalName
为了修复破坏的构建,我需要知道旧类的新名称.
是否有一个git命令来获取已应用于特定文件的所有重命名?
我使用两个库,一个发出“原始”DOM 事件(lib.dom.d.ts)的库,另一个消耗React.SyntheticEvents
.
将原始事件干净地转换为 SyntheticEvent的最佳方法是什么?
我想将一些文本解析为日期.但是,无法保证文本具有所需的格式.这可能是2012-12-12
或者2012
甚至.
Currently, I am down the path to nested try-catch blocks, but that's not a good direction (I suppose).
LocalDate parse;
try {
parse = LocalDate.parse(record, DateTimeFormatter.ofPattern("uuuu/MM/dd"));
} catch (DateTimeParseException e) {
try {
Year year = Year.parse(record);
parse = LocalDate.from(year.atDay(1));
} catch (DateTimeParseException e2) {
try {
// and so on
} catch (DateTimeParseException e3) {}
}
}
Run Code Online (Sandbox Code Playgroud)
What's an elegant solution to this problem? Is it possible to use Optional
在评估期间发生异常时不存在的?如果有,怎么样?
我有一个合并请求,并且源分支已经绑定到它。现在我推送了另一个分支并希望将合并请求更改为指向新分支。gitlab-ce 可以吗?如果是,如何?
本质上,我想使用“快进合并”作为合并方法,而不必强制推送到源分支。
我想在 Spring Boot 应用程序中序列化一些 google guava Multimap。
public class SomeDTO {
@JsonProperty
Multimap<A, B> prop = HashMultimap.create();
}
Run Code Online (Sandbox Code Playgroud)
不使用定制的杰克逊序列化器,我得到一些结果
{
"prop ":
{
"empty": false
}
}
Run Code Online (Sandbox Code Playgroud)
这绝对不是我想要的。我想到了这样的事情:
{
"nodes": {
"key0": [
{
"prop0": 2,
"prop1": 4
},
{
"prop0": 5,
"prop1": 6
}
],
"key1": [
{
"prop0": 23,
"prop1": 0
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
添加
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>${jackson.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
到 pom.xml 似乎还不够......但是,我只是从整个春天 // 关键宇宙开始,所以我想我错过了一些明显的东西。
我正在编写一个 React 组件库,并且不想捆绑 React,所以我将库添加到peerDependencies
而不是dependencies
.
另外,为了防止出现有关缺少对等依赖项的愚蠢警告,我将相同的库添加到该devDependencies
部分。
那不是 DRY,但固定警告对我来说比 DRY package.json 更重要。
所以问题是:是否有 DRYer 方法可以实现这一目标,或者我实际上遵循 2020 年 5 月的最佳实践?
{
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0",
"tslib": "^1.11.0",
},
"devDependencies": {
"@types/react": "^16.9.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"typescript": "^3.8.0"
},
"dependencies": {
// nothing here
}
}
Run Code Online (Sandbox Code Playgroud) npm ×4
git ×2
package.json ×2
yarnpkg ×2
datetime ×1
docker ×1
git-bash ×1
gitlab ×1
gitlab-8 ×1
gitlab-ce ×1
gitlab-ci ×1
guava ×1
jackson ×1
java ×1
java-8 ×1
java-time ×1
javascript ×1
json ×1
maven ×1
npm-link ×1
pnpm ×1
rancher ×1
reactjs ×1
refactoring ×1
spring-boot ×1
typescript ×1
yarn-link ×1