Initial commit
[yaffs-website] / node_modules / validate-npm-package-license / README.md
1 validate-npm-package-license
2 ============================
3
4 Give me a string and I'll tell you if it's a valid npm package license string.
5
6 ```javascript
7 var valid = require('validate-npm-package-license');
8 ```
9
10 SPDX license identifiers are valid license strings:
11
12 ```javascript
13
14 var assert = require('assert');
15 var validSPDXExpression = {
16   validForNewPackages: true,
17   validForOldPackages: true,
18   spdx: true
19 };
20
21 assert.deepEqual(valid('MIT'), validSPDXExpression);
22 assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression);
23 assert.deepEqual(valid('Apache-2.0'), validSPDXExpression);
24 assert.deepEqual(valid('ISC'), validSPDXExpression);
25 ```
26 The function will return a warning and suggestion for nearly-correct license identifiers:
27
28 ```javascript
29 assert.deepEqual(
30   valid('Apache 2.0'),
31   {
32     validForOldPackages: false,
33     validForNewPackages: false,
34     warnings: [
35       'license should be ' +
36       'a valid SPDX license expression (without "LicenseRef"), ' +
37       '"UNLICENSED", or ' +
38       '"SEE LICENSE IN <filename>"',
39       'license is similar to the valid expression "Apache-2.0"'
40     ]
41   }
42 );
43 ```
44
45 SPDX expressions are valid, too ...
46
47 ```javascript
48 // Simple SPDX license expression for dual licensing
49 assert.deepEqual(
50   valid('(GPL-3.0 OR BSD-2-Clause)'),
51   validSPDXExpression
52 );
53 ```
54
55 ... except if they contain `LicenseRef`:
56
57 ```javascript
58 var warningAboutLicenseRef = {
59   validForOldPackages: false,
60   validForNewPackages: false,
61   spdx: true,
62   warnings: [
63     'license should be ' +
64     'a valid SPDX license expression (without "LicenseRef"), ' +
65     '"UNLICENSED", or ' +
66     '"SEE LICENSE IN <filename>"',
67   ]
68 };
69
70 assert.deepEqual(
71   valid('LicenseRef-Made-Up'),
72   warningAboutLicenseRef
73 );
74
75 assert.deepEqual(
76   valid('(MIT OR LicenseRef-Made-Up)'),
77   warningAboutLicenseRef
78 );
79 ```
80
81 If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there:
82
83 ```javascript
84 assert.deepEqual(
85   valid('SEE LICENSE IN LICENSE.txt'),
86   {
87     validForNewPackages: true,
88     validForOldPackages: true,
89     inFile: 'LICENSE.txt'
90   }
91 );
92
93 assert.deepEqual(
94   valid('SEE LICENSE IN license.md'),
95   {
96     validForNewPackages: true,
97     validForOldPackages: true,
98     inFile: 'license.md'
99   }
100 );
101 ```
102
103 If there aren't any licensing terms, use `UNLICENSED`:
104
105 ```javascript
106 var unlicensed = {
107   validForNewPackages: true,
108   validForOldPackages: true,
109   unlicensed: true
110 };
111 assert.deepEqual(valid('UNLICENSED'), unlicensed);
112 assert.deepEqual(valid('UNLICENCED'), unlicensed);
113 ```