@@ -5,56 +5,27 @@ Give me a string and I'll tell you if it's a valid npm package license string.
5
5
6
6
``` javascript
7
7
var valid = require (' validate-npm-package-license' );
8
- var assert = require (' assert' );
8
+ ```
9
+
10
+ SPDX license identifiers are valid license strings:
9
11
12
+ ``` javascript
13
+
14
+ var assert = require (' assert' );
10
15
var validSPDXExpression = {
11
16
validForNewPackages: true ,
12
17
validForOldPackages: true ,
13
18
spdx: true
14
19
};
15
20
16
- // SPDX license identifier for common open-source licenses
17
21
assert .deepEqual (valid (' MIT' ), validSPDXExpression);
18
22
assert .deepEqual (valid (' BSD-2-Clause' ), validSPDXExpression);
19
23
assert .deepEqual (valid (' Apache-2.0' ), validSPDXExpression);
20
24
assert .deepEqual (valid (' ISC' ), validSPDXExpression);
25
+ ```
26
+ The function will return a warning and suggestion for nearly-correct license identifiers:
21
27
22
- // Simple SPDX license expression for dual licensing
23
- assert .deepEqual (
24
- valid (' (GPL-3.0 OR BSD-2-Clause)' ),
25
- validSPDXExpression
26
- );
27
-
28
- // Refer to a non-standard license found in the package
29
-
30
- assert .deepEqual (
31
- valid (' SEE LICENSE IN LICENSE.txt' ),
32
- {
33
- validForNewPackages: true ,
34
- validForOldPackages: true ,
35
- inFile: ' LICENSE.txt'
36
- }
37
- );
38
-
39
- assert .deepEqual (
40
- valid (' SEE LICENSE IN license.md' ),
41
- {
42
- validForNewPackages: true ,
43
- validForOldPackages: true ,
44
- inFile: ' license.md'
45
- }
46
- );
47
-
48
- // No license
49
- var unlicensed = {
50
- validForNewPackages: true ,
51
- validForOldPackages: true ,
52
- unlicensed: true
53
- };
54
- assert .deepEqual (valid (' UNLICENSED' ), unlicensed);
55
- assert .deepEqual (valid (' UNLICENCED' ), unlicensed);
56
-
57
- // Almost a valid SPDX license identifier
28
+ ``` javascript
58
29
assert .deepEqual (
59
30
valid (' Apache 2.0' ),
60
31
{
@@ -69,7 +40,21 @@ assert.deepEqual(
69
40
]
70
41
}
71
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 ` :
72
56
57
+ ``` javascript
73
58
var warningAboutLicenseRef = {
74
59
validForOldPackages: false ,
75
60
validForNewPackages: false ,
@@ -82,14 +67,47 @@ var warningAboutLicenseRef = {
82
67
]
83
68
};
84
69
85
- // LicenseRef-* identifiers are valid SPDX expressions,
86
- // but not valid in package.json
87
70
assert .deepEqual (
88
71
valid (' LicenseRef-Made-Up' ),
89
72
warningAboutLicenseRef
90
73
);
74
+
91
75
assert .deepEqual (
92
76
valid (' (MIT OR LicenseRef-Made-Up)' ),
93
77
warningAboutLicenseRef
94
78
);
95
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
+ ```
0 commit comments