Nodejs module for saving files in SharePoint:
spsave
depends heavily on another module sp-request and use it to send REST queries to SharePoint. sp-request
, in turns, depends on the module responsible for SharePoint authentiation from node js - node-sp-auth.
CHANGELOG
npm install spsave --save-dev
var spsave = require("spsave").spsave;
spsave(coreOptions, creds, fileOptions)
.then(successHandler)
.catch(errorHandler);
You have following options:
Use official gulp plugin for spsave
- gulp-spsave
Use spsave
inside gulp tasks or in watchers like this:
var spsave = require("spsave").spsave;
gulp.task('spsave', function(cb) {
spsave(coreOptions, creds, fileOptions)
.then(function(){
cb();
}).catch(cb);
);
Use both approaches. First one is handy if you are processing files in a stream, for example you need minimize, concatenate and then upload. The second can be used if you want just upload files and that's it.
Please refer to this page (at the bottom)
Starting from spsave 3.x
all options divided by logical categories (in order):
siteUrl
- required, string url of the sitecheckin
- optional, boolean to allow the files to be checked in/publishedcheckinType
- optional number, used when checkin
options is true
0
- minor1
- major2
- overwrite3
- nocheckin - special case if you don't want your file to be checked-in on every file upload. In that case you file will remain checked-in after upload and you should either manually upload it, or run spsave
again with other checkinType
checkinMessage
- optional string, you can provide your own checkin message, otherwise default will be usednotification
- optional boolean, when true, spsave
will notify about successful upload using node-notifier modulefilesMetaData
- optional, array of IFileMetaData
:
fileName
- required, string file namemetadata
- metadata object spsave 3.x
implicitly depends on another module used for SharePoint authentication from node js - node-sp-auth. For spsave
credentials param you need to pass exactly the same object, as for node-sp-auth
credentialsOptions object. That also means that spsave
supports all authentication options supported by node-sp-auth
. On Recipes page you can find a bit more samples.
You can also pass a null
as credentials, in that case spsave
will ask you for credentials and will store your credentials in a user folder in an encrypted manner (everything is handled by node-sp-auth
actually).
File options used to tell spsave
how to find\load the file to be uploaded to SharePoint. When one is used, others are ignored. There are three file options supported: file content, glob and vinyl file.
folder
- required string, site-relative url to folder, which will be used to save your file. For example for library http://sp2013/sites/dev/SiteAssets
folder will be equal to SiteAssets
, SiteAssets/subfolder
for sub folder. If the folder doesn't exist, spsave
will create that folder and all sub folders if required (full hierarchy)fileName
- required, string file namefileContent
- required, string or buffer file content (binary files supported, you can do something like this: fileContent: fs.readFileSync('app/img/logo.png')
)glob
- required, string or string array, i.e. 'build/css/style.css'
or ['build/css/*.*']
. Pattern is similar to node-glob module.base
- optional string, if you want to preserve folders structure inside SharePoint folder, you can provide a base for you files. For example when using glob ['build/css/*.*']
and base: 'build'
, all css files will be loaded under [SharePoint folder]/css
folder
- optional string, site-relative url to folder, which will be used to save your file. The same as for file content options. If the folder is null or empty, spsave
will try to resolve folder using base
option providedfile
- required, vinyl File objectfolder
- optional string, site-relative url to folder, which will be used to save your file. The same as for file content options. If the folder is null or empty, spsave
will try to resolve the folder using base
of vinyl fileDon't be scared and confused with a lot of options and take a look at the Recipes page. You can find all possible scenarios with spsave
, input params and expected output.
Handler gets called upon successful file upload.
Handler gets executed in case of exception inside spsave
. Accepts error object as first argument for callback.
Use Recipes page to see all different options available with spsave
.
var coreOptions = {
siteUrl: '[sp url]',
notification: true,
checkin: true,
checkinType: 1
};
var creds = {
username: '[username]',
password: '[password]',
domain: '[domain (on premise)]'
};
var fileOptions = {
folder: 'SiteAssets',
fileName: 'file.txt',
fileContent: 'hello world'
};
spsave(coreOptions, creds, fileOptions)
.then(function(){
console.log('saved');
})
.catch(function(err){
console.log(err);
});
I recommend using VS Code for development. Repository already contains some settings for VS Code editor. Before creating Pull Request you need to create an appropriate issue and reference it from PR.
git clone https://github.com/s-KaiNet/spsave.git
cd spsave
git checkout -b myfeature dev
npm run build
- restores dependencies and runs typescript compilationgulp live-dev
- setup watchers and automatically runs typescript compilation, tslint and tests when you save filesnpm test
. As a result /reports
folder will be created with test results in junit format and code coverage. Additionally test reports will be available in a console window./test/integration/config.sample.ts
to config.ts
.config.ts
with appropriate values (urls, credentials, environment).gulp test-int
.