mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Create build+test scripts
This commit is contained in:
parent
35c2b91534
commit
5a26ac146e
3
.github/workflows/test-ci.yml
vendored
3
.github/workflows/test-ci.yml
vendored
@ -19,6 +19,5 @@ jobs:
|
|||||||
- name: Run the test
|
- name: Run the test
|
||||||
run: |
|
run: |
|
||||||
npm ci
|
npm ci
|
||||||
npm run build
|
|
||||||
npx playwright install
|
npx playwright install
|
||||||
npm run test-ci
|
npm test
|
||||||
|
@ -163,9 +163,8 @@
|
|||||||
"src"
|
"src"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments '/^ UA/' && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments '/^ UA/' --compress --mangle && node script/build-module.js",
|
"build": "./script/build-dist.sh && ./script/build-module.js",
|
||||||
"test": "jshint src && mocha -R nyan test/mocha*js && npx playwright test && npx lockfile-lint -p package-lock.json",
|
"test": "npm run build && ./script/test-all.sh"
|
||||||
"test-ci": "jshint src && mocha -R spec test/mocha*js && npx playwright test && npx lockfile-lint -p package-lock.json"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/parser": "7.15.8",
|
"@babel/parser": "7.15.8",
|
||||||
@ -187,6 +186,7 @@
|
|||||||
},
|
},
|
||||||
"directories": {
|
"directories": {
|
||||||
"dist": "dist",
|
"dist": "dist",
|
||||||
|
"script": "script",
|
||||||
"src": "src",
|
"src": "src",
|
||||||
"test": "test"
|
"test": "test"
|
||||||
},
|
},
|
||||||
|
13
script/build-dist.sh
Executable file
13
script/build-dist.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
SRC_PATH="src/ua-parser.js"
|
||||||
|
MIN_PATH="dist/ua-parser.min.js"
|
||||||
|
PACK_PATH="dist/ua-parser.pack.js"
|
||||||
|
|
||||||
|
# minified
|
||||||
|
echo "Generate ${MIN_PATH}"
|
||||||
|
uglifyjs $SRC_PATH -o $MIN_PATH --comments "/^ UA/"
|
||||||
|
|
||||||
|
# packed
|
||||||
|
echo "Generate ${PACK_PATH}"
|
||||||
|
uglifyjs $SRC_PATH -o $PACK_PATH --comments "/^ UA/" --compress --mangle
|
71
script/build-module.js
Normal file → Executable file
71
script/build-module.js
Normal file → Executable file
@ -1,40 +1,53 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
/* jshint esversion: 6 */
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const PATH = {
|
||||||
|
main : {
|
||||||
|
src : 'src/ua-parser.js',
|
||||||
|
dest : 'src/module/ua-parser.mjs',
|
||||||
|
title : ''
|
||||||
|
},
|
||||||
|
enum : {
|
||||||
|
src : 'src/ua-parser-enum.js',
|
||||||
|
dest :'src/module/ua-parser-enum.mjs',
|
||||||
|
title : 'enum'
|
||||||
|
},
|
||||||
|
extension : {
|
||||||
|
src : 'src/ua-parser-extension.js',
|
||||||
|
dest : 'src/module/ua-parser-extension.mjs',
|
||||||
|
title : 'extension'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const generateMJS = (module, replacers) => {
|
||||||
|
const { src, dest, title } = PATH[module];
|
||||||
|
let text = fs.readFileSync(src, 'utf-8');
|
||||||
|
replacers.forEach(replacer => {
|
||||||
|
text = text.replace(replacer[0], replacer[1]);
|
||||||
|
});
|
||||||
|
|
||||||
/*///////////////
|
console.log(`Generate ${dest}`);
|
||||||
// ua-parser.mjs
|
|
||||||
//////////////*/
|
|
||||||
|
|
||||||
fs.writeFileSync('src/module/ua-parser.mjs',
|
fs.writeFileSync(dest,
|
||||||
`// Generated ESM version of UAParser.js
|
`// Generated ESM version of UAParser.js ${title}
|
||||||
// DO NOT EDIT THIS FILE!
|
// DO NOT EDIT THIS FILE!
|
||||||
// Source: /src/ua-parser.js
|
// Source: /src/ua-parser.js
|
||||||
|
|
||||||
` + fs.readFileSync('src/ua-parser.js','utf-8').replace(/\(func[\s\S]+strict\';/ig,'')
|
${text}`, 'utf-8');
|
||||||
.replace(/esversion\: 3/ig, 'esversion: 6')
|
};
|
||||||
.replace(/\/[\/\s]+export[\s\S]+/ig,'export {UAParser};'),'utf-8');
|
|
||||||
|
if (!fs.existsSync('src/module')) {
|
||||||
|
fs.mkdirSync('src/module', { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// ua-parser.mjs
|
||||||
|
generateMJS('main', [
|
||||||
|
[/\(func[\s\S]+strict\';/ig, ''],
|
||||||
|
[/esversion\: 3/ig, 'esversion: 6'],
|
||||||
|
[/\/[\/\s]+export[\s\S]+/ig,'export {UAParser};']
|
||||||
|
]);
|
||||||
|
|
||||||
/*/////////////////////
|
|
||||||
// ua-parser-enum.mjs
|
// ua-parser-enum.mjs
|
||||||
////////////////////*/
|
generateMJS('enum', [[/module\.exports =/ig, 'export']]);
|
||||||
|
|
||||||
fs.writeFileSync('src/module/ua-parser-enum.mjs',
|
|
||||||
`// Generated ESM version of UAParser.js enums
|
|
||||||
// DO NOT EDIT THIS FILE!
|
|
||||||
// Source: /src/ua-parser-enum.js
|
|
||||||
|
|
||||||
` + fs.readFileSync('src/ua-parser-enum.js','utf-8')
|
|
||||||
.replace(/module\.exports =/ig,'export'),'utf-8');
|
|
||||||
|
|
||||||
/*//////////////////////////
|
|
||||||
// ua-parser-extension.mjs
|
// ua-parser-extension.mjs
|
||||||
/////////////////////////*/
|
generateMJS('extension', [[/module\.exports =/ig, 'export']]);
|
||||||
|
|
||||||
fs.writeFileSync('src/module/ua-parser-extension.mjs',
|
|
||||||
`// Generated ESM version of UAParser.js extensions
|
|
||||||
// DO NOT EDIT THIS FILE!
|
|
||||||
// Source: /src/ua-parser-extension.js
|
|
||||||
|
|
||||||
` + fs.readFileSync('src/ua-parser-extension.js','utf-8')
|
|
||||||
.replace(/const UA.+\)/ig,'import UAParser from \'ua-parser-js\'')
|
|
||||||
.replace(/module\.exports =/ig,'export'),'utf-8');
|
|
21
script/test-all.sh
Executable file
21
script/test-all.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
echo '
|
||||||
|
- lint js code
|
||||||
|
'
|
||||||
|
jshint src && jshint script || exit 1
|
||||||
|
|
||||||
|
echo '
|
||||||
|
- test using mocha
|
||||||
|
'
|
||||||
|
mocha -R list test/mocha*js || exit 1
|
||||||
|
|
||||||
|
echo '
|
||||||
|
- test using playwright
|
||||||
|
'
|
||||||
|
npx playwright test || exit 1
|
||||||
|
|
||||||
|
echo '
|
||||||
|
- lint lockfile
|
||||||
|
'
|
||||||
|
npx lockfile-lint -p package-lock.json || exit 1
|
Loading…
x
Reference in New Issue
Block a user