how to change the dist-folder path in angular-cli after 'ng build'

后端 未结 10 558
无人及你
无人及你 2020-12-07 11:27

I would like to use angular-cli with asp.net core and I need to know how I can change the path of the dist folder

相关标签:
10条回答
  • 2020-12-07 12:12

    You can use the CLI too, like:

    ng build -prod --output-path=production
    
    # or
    
    ng serve --output-path=devroot
    
    0 讨论(0)
  • 2020-12-07 12:12

    Another option would be to set the webroot path to the angular cli dist folder. In your Program.cs when configuring the WebHostBuilder just say

    .UseWebRoot(Directory.GetCurrentDirectory() + "\\Frontend\\dist")
    

    or whatever the path to your dist dir is.

    0 讨论(0)
  • 2020-12-07 12:16

    The only thing that worked for me was to change outDir in in both angular-cli.json AND src/tsconfig.json.

    I wanted my dist-folder outside the angular project folder. If I didn't change the setting in src/tsconfig.json as well, Angular CLI would throw warnings whenever I build the project.

    Here are the most important lines ...

    // angular-cli.json
    {
      ...
      "apps": [
        {
          "outDir": "../dist",
          ...
        }
      ],
      ...
    }
    

    And ...

    // tsconfig.json
    {
      "compilerOptions": {
        "outDir": "../../dist/out-tsc",
        ...
      }
    }
    
    0 讨论(0)
  • 2020-12-07 12:19

    For Angular 6+ things have changed a little.

    Define where ng build generates app files

    Cli setup is now done in angular.json (replaced .angular-cli.json) in your workspace root directory. The output path in default angular.json should look like this (irrelevant lines removed):

    {
      "projects": {
        "my-app-name": {
        "architect": {
          "options": {
             "outputPath": "dist/my-app-name",
    

    Obviously, this will generate your app in WORKSPACE/dist/my-app-name. Modify outputPath if you prefer another directory.

    You can overwrite the output path using command line arguments (e.g. for CI jobs):

    ng build -op dist/example
    ng build --output-path=dist/example
    

    S.a. https://github.com/angular/angular-cli/wiki/build

    Hosting angular app in subdirectory

    Setting the output path, will tell angular where to place the "compiled" files but however you change the output path, when running the app, angular will still assume that the app is hosted in the webserver's document root.

    To make it work in a sub directory, you'll have to set the base href.

    In angular.json:

    {
      "projects": {
        "my-app-name": {
        "architect": {
          "options": {
             "baseHref": "/my-folder/",
    

    Cli:

    ng build --base-href=/my-folder/
    

    If you don't know where the app will be hosted on build time, you can change base tag in generated index.html.

    Here's an example how we do it in our docker container:

    entrypoint.sh

    if [ -n "${BASE_PATH}" ]
    then
      files=( $(find . -name "index.html") )
      cp -n "${files[0]}" "${files[0]}.org"
      cp "${files[0]}.org" "${files[0]}"
      sed -i "s*<base href=\"/\">*<base href=\"${BASE_PATH}\">*g" "${files[0]}"
    fi
    
    0 讨论(0)
提交回复
热议问题