|
|
validate-npm-package-license============================
Give me a string and I'll tell you if it's a valid npm package license string.
```javascriptvar valid = require('validate-npm-package-license');```
SPDX license identifiers are valid license strings:
```javascript
var assert = require('assert');var validSPDXExpression = { validForNewPackages: true, validForOldPackages: true, spdx: true};
assert.deepEqual(valid('MIT'), validSPDXExpression);assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression);assert.deepEqual(valid('Apache-2.0'), validSPDXExpression);assert.deepEqual(valid('ISC'), validSPDXExpression);```The function will return a warning and suggestion for nearly-correct license identifiers:
```javascriptassert.deepEqual( valid('Apache 2.0'), { validForOldPackages: false, validForNewPackages: false, warnings: [ 'license should be ' + 'a valid SPDX license expression (without "LicenseRef"), ' + '"UNLICENSED", or ' + '"SEE LICENSE IN <filename>"', 'license is similar to the valid expression "Apache-2.0"' ] });```
SPDX expressions are valid, too ...
```javascript// Simple SPDX license expression for dual licensingassert.deepEqual( valid('(GPL-3.0-only OR BSD-2-Clause)'), validSPDXExpression);```
... except if they contain `LicenseRef`:
```javascriptvar warningAboutLicenseRef = { validForOldPackages: false, validForNewPackages: false, spdx: true, warnings: [ 'license should be ' + 'a valid SPDX license expression (without "LicenseRef"), ' + '"UNLICENSED", or ' + '"SEE LICENSE IN <filename>"', ]};
assert.deepEqual( valid('LicenseRef-Made-Up'), warningAboutLicenseRef);
assert.deepEqual( valid('(MIT OR LicenseRef-Made-Up)'), warningAboutLicenseRef);```
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:
```javascriptassert.deepEqual( valid('SEE LICENSE IN LICENSE.txt'), { validForNewPackages: true, validForOldPackages: true, inFile: 'LICENSE.txt' });
assert.deepEqual( valid('SEE LICENSE IN license.md'), { validForNewPackages: true, validForOldPackages: true, inFile: 'license.md' });```
If there aren't any licensing terms, use `UNLICENSED`:
```javascriptvar unlicensed = { validForNewPackages: true, validForOldPackages: true, unlicensed: true};assert.deepEqual(valid('UNLICENSED'), unlicensed);assert.deepEqual(valid('UNLICENCED'), unlicensed);```
|