rework misskey-js build to preserve original package structure

This commit is contained in:
Hazelnoot 2025-10-01 15:55:45 -04:00
parent b8a3bd6182
commit 2faeabe79c
7 changed files with 55 additions and 15 deletions

View file

@ -45,7 +45,7 @@
* *
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
*/ */
"mainEntryPointFilePath": "<projectFolder>/built/src/index.d.ts", "mainEntryPointFilePath": "<projectFolder>/built/index.d.ts",
/** /**
* A list of NPM package names whose exports should be treated as part of this package. * A list of NPM package names whose exports should be treated as part of this package.
@ -111,7 +111,7 @@
/** /**
* (REQUIRED) Whether to generate an API report. * (REQUIRED) Whether to generate an API report.
*/ */
"enabled": true "enabled": true,
/** /**
* The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce
@ -152,7 +152,7 @@
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/temp/" * DEFAULT VALUE: "<projectFolder>/temp/"
*/ */
// "reportTempFolder": "<projectFolder>/temp/" "reportTempFolder": "<projectFolder>/temp/api-extractor/"
}, },
/** /**

View file

@ -19,10 +19,11 @@ export default [
'**/coverage/', '**/coverage/',
'**/node_modules/', '**/node_modules/',
'scripts', 'scripts',
'*.*',
], ],
}, },
{ {
files: ['src/**/*.ts', 'src/**/*.tsx'], files: ['src/**/*.ts', 'test/**/*.ts'],
languageOptions: { languageOptions: {
parserOptions: { parserOptions: {
parser: tsParser, parser: tsParser,
@ -32,6 +33,9 @@ export default [
}, },
}, },
}, },
{
files: ['scripts/**/*.mjs'],
},
{ {
files: ['src/autogen/**/*.ts', 'src/autogen/**/*.tsx'], files: ['src/autogen/**/*.ts', 'src/autogen/**/*.tsx'],
rules: { rules: {

View file

@ -4,13 +4,13 @@
"version": "2025.5.2-dev", "version": "2025.5.2-dev",
"description": "Misskey SDK for JavaScript", "description": "Misskey SDK for JavaScript",
"license": "MIT", "license": "MIT",
"main": "./built/src/index.js", "main": "./built/index.js",
"types": "./built/src/index.d.ts", "types": "./built/index.d.ts",
"scripts": { "scripts": {
"clean": "node scripts/clean.mjs", "clean": "node scripts/clean.mjs",
"build": "tsc -b && ncp test-d ./built/test-d", "build": "tsc -b && node scripts/post-build.mjs",
"rebuild": "pnpm clean && pnpm build", "rebuild": "pnpm clean && pnpm build",
"tsd": "tsd --files \"./built/test-d/**/*.ts\"", "tsd": "tsd --types \"./temp/built/src/index.d.ts\" --files \"./temp/built/test-d/**/*.ts\"",
"api": "pnpm api-extractor run --local --verbose", "api": "pnpm api-extractor run --local --verbose",
"api-prod": "pnpm api-extractor run --verbose", "api-prod": "pnpm api-extractor run --verbose",
"eslint": "eslint --quiet \"{src,test,test-d,scripts}/**/*.{js,jsx,ts,tsx,vue}\" --cache", "eslint": "eslint --quiet \"{src,test,test-d,scripts}/**/*.{js,jsx,ts,tsx,vue}\" --cache",
@ -41,7 +41,7 @@
"typescript": "5.8.3" "typescript": "5.8.3"
}, },
"files": [ "files": [
"built/src" "built"
], ],
"dependencies": { "dependencies": {
"eventemitter3": "5.0.1", "eventemitter3": "5.0.1",

View file

@ -1,5 +1,26 @@
import * as nodepath from 'path'; import * as nodepath from 'path';
export const scriptsDir = import.meta.dirname; const dirname = import.meta.dirname;
export const rootDir = nodepath.join(scriptsDir, '../');
export const outDir = nodepath.join(rootDir, './built'); /** Root directory of the misskey-js project */
export const rootDir = nodepath.join(dirname, '../');
/** Output directory for fully-built library. */
export const outDir = nodepath.join(rootDir, 'built');
/** Working directory for builds. */
export const buildDir = nodepath.join(rootDir, 'temp/built');
/** Source directory for "scripts" subpackage, containing pure-JS scripts. */
export const scriptsSource = dirname;
/** Source directory for "lib" subpackage, containing the actual library source. */
export const libSource = nodepath.join(rootDir, 'src');
/** Source directory for "test" subpackage, containing unit tests. */
export const testSource = nodepath.join(rootDir, 'test');
/** Source directory for "test-d" subpackage, containing non-built type tests. */
export const testDSource = nodepath.join(rootDir, 'test-d');
/** Working directory for "lib" subpackage builds */
export const libBuild = nodepath.join(buildDir, 'src');
/** Working directory for "test" subpackage builds */
export const testBuild = nodepath.join(buildDir, 'test');
/** Working directory for "test-d" subpackage builds */
export const testDBuild = nodepath.join(buildDir, 'test-d');

View file

@ -1,5 +1,8 @@
import { rm } from 'fs/promises'; import { rm } from 'fs/promises';
import { outDir } from './_common.mjs'; import {buildDir, outDir} from './_common.mjs';
console.log(`Cleaning ${outDir}...`); console.log(`Cleaning working directory ${buildDir}...`);
await rm(buildDir, { recursive: true, force: true });
console.log(`Cleaning output directory ${outDir}...`);
await rm(outDir, { recursive: true, force: true }); await rm(outDir, { recursive: true, force: true });

View file

@ -0,0 +1,12 @@
import {libBuild, outDir, testDBuild, testDSource} from './_common.mjs';
import {rm, cp} from 'fs/promises';
// Always clean the output, because artifacts are cached in the build directory instead.
console.log(`Cleaning output directory ${outDir}...`);
await rm(outDir, { recursive: true, force: true });
// Copy built lib to output directory.
await cp(libBuild, outDir, { recursive: true });
// Stage test-d sources in the build directory so tsd will work.
await cp(testDSource, testDBuild, { recursive: true });

View file

@ -10,7 +10,7 @@
"inlineSources": true, "inlineSources": true,
"allowJs": true, "allowJs": true,
"checkJs": true, "checkJs": true,
"outDir": "./built/", "outDir": "./temp/built/",
"strict": true, "strict": true,
"strictFunctionTypes": true, "strictFunctionTypes": true,
"strictNullChecks": true, "strictNullChecks": true,