1
0
mirror of https://github.com/citizenfx/cfx-server-data.git synced 2025-02-03 19:03:03 +08:00

Compare commits

..

No commits in common. "60da977c02245d45c97ffda63d49a6fb0d8f2228" and "bbc77613f031ee6cde68a5afc507aa177155f230" have entirely different histories.

3 changed files with 158 additions and 193 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "webpack-builder", "name": "webpack-builder",
"version": "1.0.1", "version": "1.0.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -9,8 +9,8 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"async": "^3.1.0", "async": "^2.6.1",
"webpack": "^4.41.2", "webpack": "^4.12.0",
"worker-farm": "^1.7.0" "worker-farm": "^1.6.0"
} }
} }

View File

@ -2,9 +2,7 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const workerFarm = require('worker-farm'); const workerFarm = require('worker-farm');
const async = require('async'); const async = require('async');
let buildingInProgress = false;
let currentBuildingModule = '';
let currentBuildingScript = '';
const webpackBuildTask = { const webpackBuildTask = {
shouldBuild(resourceName) { shouldBuild(resourceName) {
const numMetaData = GetNumResourceMetadata(resourceName, 'webpack_config'); const numMetaData = GetNumResourceMetadata(resourceName, 'webpack_config');
@ -68,23 +66,21 @@ const webpackBuildTask = {
}, },
build(resourceName, cb) { build(resourceName, cb) {
let buildWebpack = async () => {
let error = null;
const configs = []; const configs = [];
const numMetaData = GetNumResourceMetadata(resourceName, 'webpack_config'); const numMetaData = GetNumResourceMetadata(resourceName, 'webpack_config');
for (let i = 0; i < numMetaData; i++) { for (let i = 0; i < numMetaData; i++) {
configs.push(GetResourceMetadata(resourceName, 'webpack_config', i)); configs.push(GetResourceMetadata(resourceName, 'webpack_config', i));
} }
for (const configName of configs) {
async.forEachOf(configs, (configName, i, acb) => {
const configPath = GetResourcePath(resourceName) + '/' + configName; const configPath = GetResourcePath(resourceName) + '/' + configName;
const cachePath = `cache/${resourceName}/${configName.replace(/\//g, '_')}.json`; const cachePath = `cache/${resourceName}/${configName.replace(/\//g, '_')}.json`;
try { try {
fs.mkdirSync(path.dirname(cachePath)); fs.mkdirSync(path.dirname(cachePath));
} catch { } catch {}
}
const config = require(configPath); const config = require(configPath);
@ -93,13 +89,6 @@ const webpackBuildTask = {
if (config) { if (config) {
const resourcePath = path.resolve(GetResourcePath(resourceName)); const resourcePath = path.resolve(GetResourcePath(resourceName));
while (buildingInProgress) {
console.log(`webpack is busy by another process: we are waiting to compile ${resourceName} (${configName})`);
await sleep(3000);
}
buildingInProgress = true;
currentBuildingModule = resourceName;
currentBuildingScript = configName;
workers({ workers({
configPath, configPath,
resourcePath, resourcePath,
@ -113,11 +102,7 @@ const webpackBuildTask = {
console.error(err.details); console.error(err.details);
} }
buildingInProgress = false; acb("worker farm webpack errored out");
currentBuildingModule = '';
currentBuildingScript = '';
error = "worker farm webpack errored out";
console.error("worker farm webpack errored out");
return; return;
} }
@ -125,32 +110,30 @@ const webpackBuildTask = {
for (const error of outp.errors) { for (const error of outp.errors) {
console.log(error); console.log(error);
} }
buildingInProgress = false; acb("webpack got an error");
currentBuildingModule = '';
currentBuildingScript = '';
error = "webpack got an error";
console.error("webpack got an error");
return; return;
} }
console.log(`${resourceName}: built ${configName}`); console.log(`${resourceName}: built ${configName}`);
buildingInProgress = false; acb();
currentBuildingModule = ''; });
currentBuildingScript = '';
return;
}
acb("no configuration");
}, (err) => {
setImmediate(() => {
if (err) {
cb(false, err);
return;
}
cb(true);
});
}); });
} }
} }
if (error) {
cb(false, error);
} else cb(true);
};
buildWebpack().then();
}
};
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
RegisterResourceBuildTaskFactory('z_webpack', () => webpackBuildTask); RegisterResourceBuildTaskFactory('z_webpack', () => webpackBuildTask);

View File

@ -1,8 +1,6 @@
const path = require('path'); const path = require('path');
const fs = require('fs'); const fs = require('fs');
const child_process = require('child_process'); const child_process = require('child_process');
let buildingInProgress = false;
let currentBuildingModule = '';
const yarnBuildTask = { const yarnBuildTask = {
shouldBuild(resourceName) { shouldBuild(resourceName) {
@ -32,13 +30,6 @@ const yarnBuildTask = {
}, },
build(resourceName, cb) { build(resourceName, cb) {
let buildYarn = async () => {
while (buildingInProgress) {
console.log(`yarn is busy by another process: we are waiting to compile ${resourceName}`);
await sleep(3000);
}
buildingInProgress = true;
currentBuildingModule = resourceName;
const process = child_process.fork( const process = child_process.fork(
require.resolve('./yarn_cli.js'), require.resolve('./yarn_cli.js'),
['install'], ['install'],
@ -49,8 +40,6 @@ const yarnBuildTask = {
process.on('exit', (code, signal) => { process.on('exit', (code, signal) => {
setImmediate(() => { setImmediate(() => {
if (code != 0 || signal) { if (code != 0 || signal) {
buildingInProgress = false;
currentBuildingModule = '';
cb(false, 'yarn failed!'); cb(false, 'yarn failed!');
return; return;
} }
@ -64,17 +53,10 @@ const yarnBuildTask = {
} }
buildingInProgress = false;
currentBuildingModule = '';
cb(true); cb(true);
}); });
}); });
};
buildYarn().then();
} }
}; }
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
RegisterResourceBuildTaskFactory('yarn', () => yarnBuildTask); RegisterResourceBuildTaskFactory('yarn', () => yarnBuildTask);