1 validate-npm-package-license
2 ============================
4 Give me a string and I'll tell you if it's a valid npm package license string.
7 var valid = require('validate-npm-package-license');
10 SPDX license identifiers are valid license strings:
14 var assert = require('assert');
15 var validSPDXExpression = {
16 validForNewPackages: true,
17 validForOldPackages: true,
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);
26 The function will return a warning and suggestion for nearly-correct license identifiers:
32 validForOldPackages: false,
33 validForNewPackages: false,
35 'license should be ' +
36 'a valid SPDX license expression (without "LicenseRef"), ' +
38 '"SEE LICENSE IN <filename>"',
39 'license is similar to the valid expression "Apache-2.0"'
45 SPDX expressions are valid, too ...
48 // Simple SPDX license expression for dual licensing
50 valid('(GPL-3.0 OR BSD-2-Clause)'),
55 ... except if they contain `LicenseRef`:
58 var warningAboutLicenseRef = {
59 validForOldPackages: false,
60 validForNewPackages: false,
63 'license should be ' +
64 'a valid SPDX license expression (without "LicenseRef"), ' +
66 '"SEE LICENSE IN <filename>"',
71 valid('LicenseRef-Made-Up'),
72 warningAboutLicenseRef
76 valid('(MIT OR LicenseRef-Made-Up)'),
77 warningAboutLicenseRef
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:
85 valid('SEE LICENSE IN LICENSE.txt'),
87 validForNewPackages: true,
88 validForOldPackages: true,
94 valid('SEE LICENSE IN license.md'),
96 validForNewPackages: true,
97 validForOldPackages: true,
103 If there aren't any licensing terms, use `UNLICENSED`:
107 validForNewPackages: true,
108 validForOldPackages: true,
111 assert.deepEqual(valid('UNLICENSED'), unlicensed);
112 assert.deepEqual(valid('UNLICENCED'), unlicensed);