为 Bluemix 上运行的 Node.js 应用程序自动收集法律报告(1)
- UID
- 1066743
|
为 Bluemix 上运行的 Node.js 应用程序自动收集法律报告(1)
发布新的软件版本之前,开发人员和发布经理需要确保软件中包含的所有库(依赖项)已被授权用于商业用途。构建 Node.js 应用程序时,您可能使用数十个外部库,每个库都有不同的许可条款。收集所有这些库的信息可能很痛苦而且很耗时。本文介绍如何自动完成这些任务,并生成项目中所用全部依赖项的列表:列表中包含依赖项所遵守的许可,以及可在哪个网站或存储库中找到它们。
您需要满足的条件- 一个 Node.js 应用程序
- 最新版本的 Node 包管理器 (npm)(Node.js 已安装 npm,但 npm 的更新频率比 Node.js 高,所以请确保您拥有最新的版本。)
- IBM® Bluemix™ DevOps Services 管道
- Grunt,JavaScript 任务运行程序(0.4.5 版或更高版本)
备注:本文选择 IBM Bluemix DevOps Services 作为例子,但是您可将同样的 Grunt 任务轻松集成到 Jenkins 作业中。您也可以修改我们所创建的代码,从而在 Gulp 中运行它,或者在 Grunt 以外的任何其他任务自动化框架中运行它。
第 1 步. 设置 Grunt如果已设置好 Grunt,可跳到下一步。如果项目中还不包含 Grunt,可执行以下步骤设置它。您需要 Grunt 的命令行接口 (CLI) 和 Grunt Node 模块。
- 要安装 Grunt 的 CLI,可在项目的根文件夹运行以下命令。您可能需要使用 sudo(对于 OSX、Linux®、BSD 等)或以管理员身份(对于 Windows®)运行命令。要将 grunt 命令放到系统路径中,并允许从任何目录运行它:
1
| npm install -g grunt-cli
|
- 安装 Grunt CLI 不会将 Grunt 任务运行程序安装在您的项目中。要将它添加到项目中,可运行以下命令。这会将 Grunt 添加到 package.json 依赖项文件中并将其作为一个开发依赖项。
1
| npm install grunt --save-dev
|
- 创建一个 Gruntfile.js 文件。这应该是一个有效的 JavaScript 文件,与 package.json 文件一起位于项目的根目录中,而且应与项目源代码一同提交。下面一个 Gruntfile.js 文件示例:
1
2
3
4
5
6
7
8
9
| module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json')
});
grunt.registerTask('default');
};
|
第 2 步. 创建一个执行许可任务的脚本为项目设置好 Grunt 后,创建一个新的 Grunt 任务文件来包含由 Grunt 执行的自定义代码。
- 在项目的根目录下创建一个名为 build_tasks 的文件夹,在此文件夹中创建一个名为 licenses.js 的文件。
- 将您的自定义 Grunt 任务放在这个文件中。就现在而言,可使用下面这个 licenses.js 文件。
1
2
3
4
5
6
7
8
9
| module.exports = function (grunt) {
'use strict';
grunt.registerTask('example', 'Example task', function () {
});
};
|
- 上面的代码注册一个可从 Gruntfile.js 调用的简单任务。为此,需要修改 Gruntfile.js,将这些任务加载到最近创建的 build_tasks 文件夹中。
1
2
3
4
5
6
7
8
9
10
11
12
| npm install grunt --save-dev
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json')
});
grunt.task.loadTasks('build_tasks');
grunt.registerTask('default', ['example']);
};
|
- 要测试它是否有效,可在命令行中从项目的根目录运行 grunt。应该看到以下输出:
1
2
3
| Running "example" task
Done, without errors.
|
|
|
|
|
|
|