Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Import component from a different repo

I created a repo in bitbucket which called "angular-lister", the structure of the repo is:enter image description here

Then I created another repo which have the same structure (sort of, cant put picture here and it doesnt really matter).
In this second repo I installed my repo using npm i --save path/to/angular-lister.git and I saw it was added to my package json + it's located under my node_modules folder.

I am trying to import a component from angular-lister (app/app.component) but I am unable to do it.

This is my app.module.ts of the second repo (NOT angular-lister):

import { ListerAppComponent } from 'node_modules/angular-lister/app/app.component'

@NgModule({
    imports:      [
        ...
    ],
    declarations: [
        ...,
        ListerAppComponent
    ],
    bootstrap:    [ ...]
})

and I get the following error:

zone.js:1382 GET http://localhost:3000/node_modules/angular-lister/app/app.component 404 (Not Found)

Why is that, what am I doing wrong here?

EDIT:

content of files in the main project (which is using angular-lister)

package.json:

{
  "name": "angular-project",
  "version": "1.0.0",
  "scripts": {
    "start": "concurrently \"npm run tsc:w\" \"npm run lite\" ",
    "lite": "lite-server",
    "tsc": "tsc",
    "tsc:w": "tsc -w"
  },
  "licenses": [
    {
      "type": "MIT",
      "url": "https://github.com/angular/angular.io/blob/master/LICENSE"
    }
  ],
  "dependencies": {
    "@angular/common": "~2.1.1",
    "@angular/compiler": "~2.1.1",
    "@angular/core": "~2.1.1",
    "@angular/forms": "~2.1.1",
    "@angular/http": "~2.1.1",
    "@angular/platform-browser": "~2.1.1",
    "@angular/platform-browser-dynamic": "~2.1.1",
    "@angular/router": "~3.1.1",
    "@angular/upgrade": "~2.1.1",
    "angular-in-memory-web-api": "~0.1.13",
    "bootstrap": "^3.3.7",
    "core-js": "^2.4.1",
    "angular-lister": "git+https://bitbucket.org/project/angular-lister.git",
    "font-awesome": "^4.7.0",
    "ng2-bootstrap": "^1.1.16",
    "reflect-metadata": "^0.1.8",
    "rxjs": "5.0.0-beta.12",
    "systemjs": "0.19.39",
    "tinymce": "^4.4.3",
    "zone.js": "^0.6.25"
  },
  "devDependencies": {
    "@types/core-js": "^0.9.34",
    "@types/node": "^6.0.45",
    "concurrently": "^3.0.0",
    "lite-server": "^2.2.2",
    "typescript": "^2.0.3"
  }
}

system.config.js:

/**
 * System configuration for Angular samples
 * Adjust as necessary for your application needs.
 */
(function (global) {
    System.config({
        paths: {
            // paths serve as alias
            'npm:': 'node_modules/'
        },
        // map tells the System loader where to look for things
        map: {
            // our app is within the app folder
            app: 'app',
            // angular bundles
            '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
            '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
            '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
            '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
            '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
            '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
            '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
            '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
            '@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js',
            // other libraries
            'rxjs':                      'npm:rxjs',
            'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
            'ng2-bootstrap': 'node_modules/ng2-bootstrap/bundles/ng2-bootstrap.umd.js',
            'moment': 'node_modules/moment/moment.js'
        },
        // packages tells the System loader how to load when no filename and/or no extension
        packages: {
            app: {
                main: './main.js',
                defaultExtension: 'js'
            },
            rxjs: {
                defaultExtension: 'js'
            }
        }
    });
})(this);

node_modules/agnular-lister:

enter image description here

like image 777
Ron Avatar asked Dec 02 '16 13:12

Ron


People also ask

How do I import a component from another project?

To install the component in other projects all you have to do is configure bit. dev as a scoped registry for your NPM client using a single command. Then, you can simply install any component as a package using the component's install command (also found on the component's page). And that's it.

Can I import one component into another angular?

Yes , It possible to include child component by using selector as class name. This way will require some changes in selector metadata of the component. ts file of child. Now the child component can be included in the parent using class name like this.

How do I import a repo?

Select Repos, Files. From the repo drop-down, select Import repository. If the source repo is publicly available, just enter the clone URL of the source repository and a name for your new Git repository.


1 Answers

node_modules should not be there since you are already telling SystemJS to check in that folder. Just edit it by this:

import { ListerAppComponent } from './angular-lister/app/app.component'

Keep in mind that you can't just import the project, you have to create a npm package and export the right thing. this tutorial is a good entrypoint to understand how it works.

like image 139
LoïcR Avatar answered Oct 12 '22 12:10

LoïcR