Angular Images in Component Folder: Let the Compiler Move Images to Assets











up vote
1
down vote

favorite












I want to make my components portable to other projects, therefore I want to have all the images contained in the component folder and let the compiler take care of it.



I found different solutions which I all don't quite like:



1) Defining different folders in the angular.json:



Is it mandatory to keep images in assets folder in Angular 2?



I don't like this approach because it requires a lot of manual work.



2) Defining a path variable within the component



Angular 2 img src in a relative path



This approach creates a lot of extra variables.



My goal would be to do s.th. like this



A) Referencing to the image like all other images:



<img *ngIf="images[sensor.model]" [src]="'assets/images/' + images[sensor.model]"/>


B) Configuring the compiler to move the images from all folders to assets, e.g. in an old AngularJs project where I used gulp, this could be done with globbing:



gulp.task('images', function () {
return gulp.src([paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', '!'+'/**/*/*-sprite*'])
.pipe($.rename({dirname: ''}))
.pipe(gulp.dest(paths.dist + '/assets/images/'));
});


And it could be easily achieved, that images are only copied if images change for faster compiling:



gulp.watch(paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', ['images']);


Question



Can the compiler be set up to search for images and move them to assets/images and would there be a downside to it ( I read that assets are static for faster compiling ).










share|improve this question


























    up vote
    1
    down vote

    favorite












    I want to make my components portable to other projects, therefore I want to have all the images contained in the component folder and let the compiler take care of it.



    I found different solutions which I all don't quite like:



    1) Defining different folders in the angular.json:



    Is it mandatory to keep images in assets folder in Angular 2?



    I don't like this approach because it requires a lot of manual work.



    2) Defining a path variable within the component



    Angular 2 img src in a relative path



    This approach creates a lot of extra variables.



    My goal would be to do s.th. like this



    A) Referencing to the image like all other images:



    <img *ngIf="images[sensor.model]" [src]="'assets/images/' + images[sensor.model]"/>


    B) Configuring the compiler to move the images from all folders to assets, e.g. in an old AngularJs project where I used gulp, this could be done with globbing:



    gulp.task('images', function () {
    return gulp.src([paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', '!'+'/**/*/*-sprite*'])
    .pipe($.rename({dirname: ''}))
    .pipe(gulp.dest(paths.dist + '/assets/images/'));
    });


    And it could be easily achieved, that images are only copied if images change for faster compiling:



    gulp.watch(paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', ['images']);


    Question



    Can the compiler be set up to search for images and move them to assets/images and would there be a downside to it ( I read that assets are static for faster compiling ).










    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I want to make my components portable to other projects, therefore I want to have all the images contained in the component folder and let the compiler take care of it.



      I found different solutions which I all don't quite like:



      1) Defining different folders in the angular.json:



      Is it mandatory to keep images in assets folder in Angular 2?



      I don't like this approach because it requires a lot of manual work.



      2) Defining a path variable within the component



      Angular 2 img src in a relative path



      This approach creates a lot of extra variables.



      My goal would be to do s.th. like this



      A) Referencing to the image like all other images:



      <img *ngIf="images[sensor.model]" [src]="'assets/images/' + images[sensor.model]"/>


      B) Configuring the compiler to move the images from all folders to assets, e.g. in an old AngularJs project where I used gulp, this could be done with globbing:



      gulp.task('images', function () {
      return gulp.src([paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', '!'+'/**/*/*-sprite*'])
      .pipe($.rename({dirname: ''}))
      .pipe(gulp.dest(paths.dist + '/assets/images/'));
      });


      And it could be easily achieved, that images are only copied if images change for faster compiling:



      gulp.watch(paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', ['images']);


      Question



      Can the compiler be set up to search for images and move them to assets/images and would there be a downside to it ( I read that assets are static for faster compiling ).










      share|improve this question













      I want to make my components portable to other projects, therefore I want to have all the images contained in the component folder and let the compiler take care of it.



      I found different solutions which I all don't quite like:



      1) Defining different folders in the angular.json:



      Is it mandatory to keep images in assets folder in Angular 2?



      I don't like this approach because it requires a lot of manual work.



      2) Defining a path variable within the component



      Angular 2 img src in a relative path



      This approach creates a lot of extra variables.



      My goal would be to do s.th. like this



      A) Referencing to the image like all other images:



      <img *ngIf="images[sensor.model]" [src]="'assets/images/' + images[sensor.model]"/>


      B) Configuring the compiler to move the images from all folders to assets, e.g. in an old AngularJs project where I used gulp, this could be done with globbing:



      gulp.task('images', function () {
      return gulp.src([paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', '!'+'/**/*/*-sprite*'])
      .pipe($.rename({dirname: ''}))
      .pipe(gulp.dest(paths.dist + '/assets/images/'));
      });


      And it could be easily achieved, that images are only copied if images change for faster compiling:



      gulp.watch(paths.src + '/**/*.{jpg,jpeg,png,svg,gif}', ['images']);


      Question



      Can the compiler be set up to search for images and move them to assets/images and would there be a downside to it ( I read that assets are static for faster compiling ).







      angular






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 hours ago









      Andi Giga

      1,34921940




      1,34921940





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203363%2fangular-images-in-component-folder-let-the-compiler-move-images-to-assets%23new-answer', 'question_page');
          }
          );

          Post as a guest





































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203363%2fangular-images-in-component-folder-let-the-compiler-move-images-to-assets%23new-answer', 'question_page');
          }
          );

          Post as a guest




















































































          Popular posts from this blog

          Landwehr

          Reims

          Javascript gets undefined on array