mirror of
https://github.com/citizenfx/cfx-server-data.git
synced 2025-02-09 06:33:29 +08:00
system: add yarn builder resource
This commit is contained in:
parent
7bb81573f1
commit
79d01af08a
2
resources/[system]/[builders]/yarn/__resource.lua
Normal file
2
resources/[system]/[builders]/yarn/__resource.lua
Normal file
@ -0,0 +1,2 @@
|
||||
server_only 'yes'
|
||||
server_script 'yarn_builder.js'
|
53
resources/[system]/[builders]/yarn/yarn_builder.js
Normal file
53
resources/[system]/[builders]/yarn/yarn_builder.js
Normal file
@ -0,0 +1,53 @@
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const child_process = require('child_process');
|
||||
|
||||
const yarnBuildTask = {
|
||||
shouldBuild(resourceName) {
|
||||
try {
|
||||
const resourcePath = GetResourcePath(resourceName);
|
||||
|
||||
const packageJson = path.resolve(resourcePath, 'package.json');
|
||||
const yarnLock = path.resolve(resourcePath, 'yarn.lock');
|
||||
|
||||
const packageStat = fs.statSync(packageJson);
|
||||
|
||||
try {
|
||||
const yarnStat = fs.statSync(yarnLock);
|
||||
|
||||
if (packageStat.mtimeMs > yarnStat.mtimeMs) {
|
||||
return true;
|
||||
}
|
||||
} catch (e) {
|
||||
// no yarn.lock, but package.json - install time!
|
||||
return true;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
build(resourceName, cb) {
|
||||
const process = child_process.fork(
|
||||
require.resolve('./yarn_cli.js'),
|
||||
['install'],
|
||||
{
|
||||
cwd: path.resolve(GetResourcePath(resourceName))
|
||||
});
|
||||
|
||||
process.on('exit', (code, signal) => {
|
||||
setImmediate(() => {
|
||||
if (code != 0 || signal) {
|
||||
cb(false, 'yarn failed!');
|
||||
return;
|
||||
}
|
||||
|
||||
cb(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
RegisterResourceBuildTaskFactory('yarn', () => yarnBuildTask);
|
147687
resources/[system]/[builders]/yarn/yarn_cli.js
Normal file
147687
resources/[system]/[builders]/yarn/yarn_cli.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user