Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[forgive] Add build scripts #31927

Merged
merged 1 commit into from
Feb 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions compiler/packages/react-forgive/.vscodeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
**/node_modules
client
server
scripts
16 changes: 8 additions & 8 deletions compiler/packages/react-forgive/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,23 @@
]
},
"scripts": {
"compile": "yarn run esbuild-base -- --sourcemap",
"build": "yarn run compile",
"compile": "rimraf dist && concurrently -n server,client \"scripts/build.mjs -t server\" \"scripts/build.mjs -t client\"",
"dev": "yarn run package && yarn run install-ext",
"esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node",
"install-ext": "code --install-extension vscode-react-compiler-0.0.1.vsix",
"install-ext": "code --install-extension react-forgive-0.0.0.vsix",
"lint": "echo 'no tests'",
"package": "vsce package",
"package": "rm -f react-forgive-0.0.0.vsix && vsce package --yarn",
"postinstall": "cd client && yarn install && cd ../server && yarn install && cd ..",
"pretest": "yarn run compile && yarn run lint",
"test": "echo 'no tests'",
"test-compile": "tsc -p ./",
"vscode:prepublish": "yarn run esbuild-base -- --minify",
"watch": "yarn run esbuild-base -- --sourcemap --watch"
"vscode:prepublish": "yarn run compile",
"watch": "scripts/build.mjs --watch"
},
"devDependencies": {
"@eslint/js": "^9.13.0",
"@types/node": "^20",
"eslint": "^9.13.0",
"typescript-eslint": "^8.16.0"
"typescript-eslint": "^8.16.0",
"yargs": "^17.7.2"
}
}
58 changes: 58 additions & 0 deletions compiler/packages/react-forgive/scripts/build.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env node

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import * as esbuild from 'esbuild';
import yargs from 'yargs';
import * as Server from './server.mjs';
import * as Client from './client.mjs';
import path from 'path';
import {fileURLToPath} from 'url';

const IS_DEV = process.env.NODE_ENV === 'development';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const argv = yargs(process.argv.slice(2))
.choices('t', ['client', 'server'])
.options('w', {
alias: 'watch',
default: false,
type: 'boolean',
})
.parse();

async function main() {
if (argv.w) {
const serverCtx = await esbuild.context(Server.config);
const clientCtx = await esbuild.context(Client.config);
await Promise.all([serverCtx.watch(), clientCtx.watch()]);
console.log('watching for changes...');
} else {
switch (argv.t) {
case 'server': {
await esbuild.build({
sourcemap: IS_DEV,
minify: IS_DEV === false,
...Server.config,
});
break;
}
case 'client': {
await esbuild.build({
sourcemap: IS_DEV,
minify: IS_DEV === false,
...Client.config,
});
break;
}
}
}
}

main();
39 changes: 39 additions & 0 deletions compiler/packages/react-forgive/scripts/client.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import path from 'path';
import {fileURLToPath} from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export const entryPoint = path.join(__dirname, '../client/src/extension.ts');
export const outfile = path.join(__dirname, '../dist/extension.js');
export const config = {
entryPoints: [entryPoint],
outfile,
bundle: true,
external: ['vscode'],
format: 'cjs',
platform: 'node',
banner: {
js: `/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @lightSyntaxTransform
* @noflow
* @nolint
* @preventMunge
* @preserve-invariant-messages
*/

`,
},
};
39 changes: 39 additions & 0 deletions compiler/packages/react-forgive/scripts/server.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import path from 'path';
import {fileURLToPath} from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export const entryPoint = path.join(__dirname, '../server/src/index.ts');
export const outfile = path.join(__dirname, '../dist/extension.js');
export const config = {
entryPoints: [entryPoint],
outfile,
bundle: true,
external: ['vscode'],
format: 'cjs',
platform: 'node',
banner: {
js: `/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @lightSyntaxTransform
* @noflow
* @nolint
* @preventMunge
* @preserve-invariant-messages
*/

`,
},
};
Loading