У меня есть проект Go, содержащий каталог Typescript AWS-CDK для определения стека, содержащего двоичный файл Go.
Самый простой проект для этого примера:
mkdir example
cd example
mkdir infrastructure
cd infrastructure
cdk init app --language typescript
cd ..
go mod init example
go mod tidy
На данный момент go.mod
полон aws-cdk-go
ссылок (несмотря на то, что я использую Typescript). В идеале go.mod
не должно иметь никаких зависимостей на данный момент. Похоже, что в пути node_modules/aws-cdk/....
скрыто несколько файлов Go, которые могут влиять на go mod tidy
.
Я пока не заинтересован в использовании библиотек Go CDK. Помимо того, что я помещаю весь мой код Go в подпапку и запускаю только go mod init
в этой подпапке, есть ли способ запретить go mod tidy
ссылаться на эти спрятанные файлы?
go mod init
ищет файлы конфигурации и, если он найден, устанавливает модули.
Избегайте этого «полезного» поведения, запустив go mod init
[Изменить] перед приложением инициализации cdk в подкаталоге:
# ...
npx cdk init app --language typescript
cd ..
mkdir src
cd src
go mod init example
go mod tidy
cd ..
Это создает пустой go.mod
, как и ожидалось.
@TimReddy - Ты прав. Я отредактировал ответ. На этот раз подтвердил ожидаемый результат с go mod tidy
;)
An empty go.mod in a directory will cause that directory and all of its subdirectories to be excluded from the top-level Go module.
В каталоге infrastructure
touch go.mod
создает пустой файл, и если я go mod tidy
в корневой папке, файл go.mod
содержит только те модули, которые на самом деле использует мой проект.
go mod tidy
— это шаг, который приводит к тому, что все модули cdk отображаются в файлеgo.mod
. Когда яgo mod init
, у него нет этих модулей.