mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +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
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
npx playwright install
|
||||
npm run test-ci
|
||||
npm test
|
||||
|
@ -163,9 +163,8 @@
|
||||
"src"
|
||||
],
|
||||
"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",
|
||||
"test": "jshint src && mocha -R nyan test/mocha*js && npx playwright test && npx lockfile-lint -p package-lock.json",
|
||||
"test-ci": "jshint src && mocha -R spec test/mocha*js && npx playwright test && npx lockfile-lint -p package-lock.json"
|
||||
"build": "./script/build-dist.sh && ./script/build-module.js",
|
||||
"test": "npm run build && ./script/test-all.sh"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/parser": "7.15.8",
|
||||
@ -187,6 +186,7 @@
|
||||
},
|
||||
"directories": {
|
||||
"dist": "dist",
|
||||
"script": "script",
|
||||
"src": "src",
|
||||
"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
|
||||
/* jshint esversion: 6 */
|
||||
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]);
|
||||
});
|
||||
|
||||
/*///////////////
|
||||
// ua-parser.mjs
|
||||
//////////////*/
|
||||
console.log(`Generate ${dest}`);
|
||||
|
||||
fs.writeFileSync('src/module/ua-parser.mjs',
|
||||
`// Generated ESM version of UAParser.js
|
||||
fs.writeFileSync(dest,
|
||||
`// Generated ESM version of UAParser.js ${title}
|
||||
// DO NOT EDIT THIS FILE!
|
||||
// Source: /src/ua-parser.js
|
||||
|
||||
` + fs.readFileSync('src/ua-parser.js','utf-8').replace(/\(func[\s\S]+strict\';/ig,'')
|
||||
.replace(/esversion\: 3/ig, 'esversion: 6')
|
||||
.replace(/\/[\/\s]+export[\s\S]+/ig,'export {UAParser};'),'utf-8');
|
||||
${text}`, '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
|
||||
////////////////////*/
|
||||
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
|
||||
/////////////////////////*/
|
||||
|
||||
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');
|
||||
generateMJS('extension', [[/module\.exports =/ig, 'export']]);
|
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