node package manager


Create SharePoint Module files


Automatic generation of Elements.xml and SharePointProjectItem.spdata files for SharePoint Modules

This plugin requires Grunt ~0.4.2

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-sp_module --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:


This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that you upgrade, but in case you can't please use v0.3.2.

Run this task with the grunt sp_module command.

Task targets, files and options may be specified according to the grunt Configuring tasks guide.

Assume we have this file structure for myModule/

|- foo.html
+- bar/
    +- baz.html

and configure the sp_module task like:

sp_module: {
  myModule: {
    options: {
      name: 'myModuleName'
    files: [{
      cwd: 'myModule',
      src: "{,*/}*.*"

This will create the following files in myModule/

  • Elements.xml
<?xml version="1.0" encoding="UTF-8"?>
<Elements xmlns="">
  <Module Name="myModule">
    <File Path="myModule\foo.html" Url="myModule\foo.html" ReplaceContent="TRUE"/>
    <File Path="myModule\bar\baz.html" Url="myModule\bar\baz.html" ReplaceContent="TRUE"/>
  • SharePointProjectItem.spdata
<?xml version="1.0" encoding="UTF-8"?>
<ProjectItem xmlns="" Type="Microsoft.VisualStudio.SharePoint.Module" DefaultFile="Elements.xml" SupportedTrustLevels="All" SupportedDeploymentScopes="Web, Site">
    <ProjectItemFile Source="Elements.xml" Target="myModule\" Type="ElementManifest"/>
    <ProjectItemFile Source="foo.html" Target="myModule\" Type="ElementFile"/>
    <ProjectItemFile Source="bar\baz.html" Target="myModule\bar\" Type="ElementFile"/>