You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.5 KiB
113 lines
2.5 KiB
validate-npm-package-license |
|
============================ |
|
|
|
Give me a string and I'll tell you if it's a valid npm package license string. |
|
|
|
```javascript |
|
var 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: |
|
|
|
```javascript |
|
assert.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 licensing |
|
assert.deepEqual( |
|
valid('(GPL-3.0-only OR BSD-2-Clause)'), |
|
validSPDXExpression |
|
); |
|
``` |
|
|
|
... except if they contain `LicenseRef`: |
|
|
|
```javascript |
|
var 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: |
|
|
|
```javascript |
|
assert.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`: |
|
|
|
```javascript |
|
var unlicensed = { |
|
validForNewPackages: true, |
|
validForOldPackages: true, |
|
unlicensed: true |
|
}; |
|
assert.deepEqual(valid('UNLICENSED'), unlicensed); |
|
assert.deepEqual(valid('UNLICENCED'), unlicensed); |
|
```
|
|
|