DEV Community

Discussion on: Publishing NestJS Packages with npm

 
koakh profile image
Mário Monteiro • Edited

Thanks John,
Yes Im asking about sharing a module within a project

@rubin sent me a GitHub link in discord that seems will Help me with issue. Thanks John for your paciente and kind answear :)

Looking forward for next great nestjs posts.

Thread Thread
 
samxdesc profile image
Samuel

Hi Mário, how are you doing?

I need to do exactly what you asked for, how did you dealed with the problem?

Thank you.

Thread Thread
 
koakh profile image
Mário Monteiro

Hello Samuel

I don't remember, I must check my project, but the of out friend @rubin put me in the right track.

When I get to home I Will check it....

O see that @rubin repo link os not on this thread, I paste it later

Thread Thread
 
solidarynetwork profile image
solidarynetwork

Hello Samuel

here are my notes
includes the link to repo that I follow to get it working from our friend @rubiin

I hope this helps :)

NOTES

Links

a example to create a nestjs package with dynamic modules :)

Tooling

CLI command to install npm peerDependencies. This can be useful when developing modules.

$ sudo npm install -g npm-install-peers
$ npm-install-peers

Publish

# build
$ npm run build
# publish
$ npm publish
# unPublish
# https://docs.npmjs.com/unpublishing-packages-from-the-registry  
# npm unpublish <package-name>@<version>
$ npm unpublish @koakh/nestjs-auth-quick-config@1.2.2

Us in NestJs from file system, ideal for developing

# create symbolic link
$ cd NodeNestJsHyperLedgerConvectorRestStarter/node_modules/@koakh
$ ln -s ../../../../../Node/@NestPackages/@koakh/nestjs-auth-quick-config/

After changes don't forget to npm run build

Use in NestJs lerna project from NPM registry

# install dependency
$ npx lerna add @koakh/nestjs-auth-quick-config --scope @convector-sample/server-graphql
$ npx lerna clean
$ npx lerna bootstrap

Install in App

app.module.ts

ex from graphql project

import { AuthQuickConfigModule } from '@koakh/nestjs-auth-quick-config';

@Module({
  imports: [
    RecipesModule,
    PersonModule,
    ParticipantModule,
    GraphQLModule.forRoot({
      installSubscriptionHandlers: true,
      autoSchemaFile: 'schema.gql',
    }),
    AuthQuickConfigModule.register({
      jwtSecret: 'secretKey',
      jwtExpiresIn: '1h',
      getByUsername: (username: string) => 'admin',
    }),
  ],
})