I created a repo in bitbucket which called "angular-lister", the structure of the repo is:
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:
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.
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With