@atravers has correctly explained part of what you were asking, and you have found Stack’s online ‘getting started’ tutorial which, I hope, will answer many of your questions.
On the ‘size’ of Stack’s ‘init’: when you first run any of Stack’s main commands, Stack sets itself up (one time only).
When you first run any of Stack’s commands that needs a specified version of GHC, and it is not already available, Stack will try to set it up (again, one time only).
When you command stack init
for an existing project without a Stack project-level configuration, Stack tries to create a configuration from the project’s packages’ description files (eg Cabal files) - and reports what it is doing.
When you command stack new
, Stack sets up a simple one-project package from a template and then, effectively, does stack init
. The project templates have fields that can populated with descriptive information (for example, the project’s author’s name and email address). A Stack user usually sets up that descriptive information (common to most projects) in Stack’s global configuration. Until you do that, you will get messages like:
Note: The following parameters were needed by the template but
not provided: author-email, author-name, category,
copyright and github-username.
You can provide them in Stack's global configuration file
(D:\sr\config.yaml) like this:
templates:
params:
author-email: value
author-name: value
category: value
copyright: value
github-username: value
Or you can pass each one on the command line as
parameters like this:
stack new testnew3 new-template -p
"author-email:value" -p "author-name:value" -p
"category:value" -p "copyright:value" -p
"github-username:value"
All of that, first time out, can generate a lot of messages but, unlike cabal init
, Stack should not ask you for input during the process. Stack choses not to take an ‘interactive’ approach to set up.