概述
npm
SharePoint Framework packages
-
@microsoft/generator-sharepoint : 一个 Sharepoint Framework的Yeoman 插件,使用这个插件开发者可以快速创建带有code模板和最佳实践的client-side webpart工程
-
@microsoft/sp-client-base :定义了用于开发client-side应用程序的核心库。
-
@microsoft/sp-client-preview :包含了一系列正处于开发阶段的组件,一旦测试完成这些组件会放在不同的package中。
-
@microsoft/sp-webpart-workbench :SharePoint Workbench是一个独立的用于测试和调试client-side web part的环境。
-
@microsoft/sp-module-loader :一个模块加载器用于管理版本和加载client-side 组件,webparts和其它的一些资源,也提供了一些基础的诊断服务。他是构建在比较熟悉的标准之上的,例如:SystemJS和WebPack。它是页面加载时SharePoint Framework中第一个被加载的部分。
-
@microsoft/sp-module-interfaces :定义了一系列的接口,这些接口被SharePoint Framework module loader和打包系统使用。
-
@microsoft/sp-lodash-subset:一个被SharePoint Framework module loader使用的lodash的定制包。为了提高效率,只包含了一些基本的lodash函数。
-
@microsoft/sp-tslint-rules :定义了SharePoint client-side工程的tslint 规则用法。
-
@microsoft/office-ui-react-bundle :SharePoint Framework module loaders使用到的最佳的office-ui-fabric-react的定制包。
Common build tools packages
-
@microsoft/sp-build-core-tasks:SharePoint Framework打包系统的一系列任务,构建在gulp之上的,这个package实现了操作SharePoint的具体方法,例如:打包solution和修改mainfests。
-
@microsoft/sp-build-web:导入并且配置一系列打包任务。
-
@microsoft/gulp-core-build:核心的gulp打包任务,主要用于打包TypeScript,Html,Less和其他的一些文件。这个package依赖于如下的package
-
@microsoft/loader-cased-file:webpack file-loader的包装,主要用于修改 所生成的文件。在某些情况下非常有用,例如:在使用CDN的时候只允许小写的文件名。
-
@microsoft/loader-load-themed-styles:一个加载器,主要用于在Script中加载css,等同于
require('load-themed-styles').loadStyles(/* css text */)
.. -
@microsoft/loader-raw-script :在webpack bundle中直接加载Script文件内容的加载器。
-
@microsoft/loader-set-webpack-public-path:用于把参数列表中的值设置到webpack_public_path 变量的加载器。
client-side project结构
Packages installation
package.json
{
"name": "helloword-webpart",
"version": "0.0.1",
"private": true,
"engines": {
"node": ">=0.10.0"
},
"dependencies": {
"@microsoft/sp-client-base": "~0.1.12",
"@microsoft/sp-client-preview": "~0.1.12"
},
"devDependencies": {
"@microsoft/sp-build-web": "~0.4.32",
"@microsoft/sp-module-interfaces": "~0.1.8",
"@microsoft/sp-webpart-workbench": "~0.1.12",
"gulp": "~3.9.1"
},
"scripts": {
"build": "gulp bundle",
"clean": "gulp nuke",
"test": "gulp test"
}
}
这些项目中安装的多个package只有在开发环境中构建web part的时候才是必须的,使用这些package你可以使用这些module,打包编译和部署你的webpart。最终你部署到CDN和SharePoint中的web part实际上不会包含这些package。也就是说,你同样可以根据你的需求配置一些指定的modules。更多信息请参见
添加额外的library到web part上面。
使用代码管理工具(例如:svn)
npm i
npm会查找package.json文件中指定的依赖,从而帮你安装对应的依赖package。
Build Task
- SharePoint Framework使用gulp执行如下的打包步骤
- 合并压缩JavaScript和CSS文件。
- 在每次打包前运行tool调用捆绑和压缩的任务。
- 编译LESS和SASS成CSS。
- 编译TypeScript文件成JavaScript。
- build:打包client-side solution 工程。
- bundle:合并client-side 的入口点以及所有依赖到一个单独的JavaScript文件中。
- serve:在本地环境中为client-side solution工程提供运行服务,既:启动node.js为工程提供IIS服务。
- nuke:清理工程目录下面的lib和dist文件中,之前打包生成的文件。
- test:运行单元测试。
- package-solution:把client-side 工程打包成SharePoint 安装包(spapp文件)。
- deploy-azure-storage:部署client-side工程中的关联文件(css,js和image等)到CDN。
gulp serve
注意: 在同一个时刻不能同时运行多个命令
![gulp serve task](https://devofficecdn.azureedge.net/sharepointdocumentation/images/toolchain-gulp-serve-task.png)
Build Targets
Build target: DEBUG
如果没有指定参数,命令会使用BUILD模式作为目标,如果使用ship作为参数,命令会使用SHIP模式作为目标。对于测试和调试的场景你需要使用BUILD的模式作为目标,使用SHIP模式能打包简化版本的web part。
gulp --ship
在Debug模式,打包任务会复制所有的web part的资源到dist文件夹。