PnP-JS-Core (sp-pnp-js) with Node.js made easy
![NPM](https://nodei.co/npm/node-pnp-js.png?mini=true)
![npm version](https://badge.fury.io/js/node-pnp-js.svg)
Need help on SharePoint with Node.JS? Join our gitter chat and ask question! ![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)
node-pnp-js
allows you to use pnp-js-core
from Node.js environment.
node-pnp-js
implements it's own version of NodeFetchClient
(shipped with sp-pnp-js
) which supports authentication with help of node-sp-auth
module.
How to use
Install
npm install node-pnp-js --save
Import fetch client and configure pnp
import * as pnp from 'sp-pnp-js';
import NodeFetchClient from 'node-pnp-js';
pnp.setup({
fetchClientFactory: () => {
return new NodeFetchClient(credentials);
}
});
credentials
- the same object (credentialOptions
) provided for node-sp-auth
module. That means you can use any authentication option from node-sp-auth
you want.
Use PnP-JS-Core library in code:
new pnp.Web(siteUrl).get()
.then(data => {
console.log(`Your web title: ${data.Title}`);
})
There are three different approaches you can use in order to provide your SharePoint site url.
1. Use Web
or Site
constructor (like in a sample above) with siteUrl
constructor param:
pnp.setup({
fetchClientFactory: () => {
return new NodeFetchClient(credentials);
}
});
new pnp.Web(siteUrl).get()
.then(data => {
console.log(`Your web title: ${data.Title}`);
})
2. Use baseUrl
configuration parameter (coming from sp-pnp-js
):
pnp.setup({
fetchClientFactory: () => {
return new NodeFetchClient(credentials);
},
baseUrl: siteUrl
});
pnp.sp.web.get()
.then(data => {
console.log(`Your web title: ${data.Title}`);
})
3. Use siteUrl
constructor param for NodeFetchClient
:
pnp.setup({
fetchClientFactory: () => {
return new NodeFetchClient(credentials, siteUrl);
}
});
pnp.sp.web.get()
.then(data => {
console.log(`Your web title: ${data.Title}`);
})
Use cases:
- Any Node.js project with SharePoint. It can be remote jobs, azure functions, daemons, etc.
- Build pipeline extensibility. You can easily enhance your gulp pipeline with custom actions touching SharePoint.
- Anything else you can do with Node.js and SharePoint :)
Development:
I recommend using VS Code for development. Repository already contains some settings for VS Code editor.
git clone https://github.com/s-KaiNet/node-pnp-js.git
npm install
npm run build
- runs typescript compilation
Integration testing:
- Rename file
/test/integration/private.config.sample.ts
to private.config.ts
. - Update information in
private.config.ts
with appropriate values (urls, credentials). - Run
gulp test-int
.