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>
*/
"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.
@ -111,7 +111,7 @@
/**
* (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
@ -152,7 +152,7 @@
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/temp/"
*/
// "reportTempFolder": "<projectFolder>/temp/"
"reportTempFolder": "<projectFolder>/temp/api-extractor/"
},
/**

View file

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

View file

@ -4,13 +4,13 @@
"version": "2025.5.2-dev",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/src/index.js",
"types": "./built/src/index.d.ts",
"main": "./built/index.js",
"types": "./built/index.d.ts",
"scripts": {
"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",
"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-prod": "pnpm api-extractor run --verbose",
"eslint": "eslint --quiet \"{src,test,test-d,scripts}/**/*.{js,jsx,ts,tsx,vue}\" --cache",
@ -41,7 +41,7 @@
"typescript": "5.8.3"
},
"files": [
"built/src"
"built"
],
"dependencies": {
"eventemitter3": "5.0.1",

View file

@ -1,5 +1,26 @@
import * as nodepath from 'path';
export const scriptsDir = import.meta.dirname;
export const rootDir = nodepath.join(scriptsDir, '../');
export const outDir = nodepath.join(rootDir, './built');
const dirname = import.meta.dirname;
/** 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 { 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 });

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,
"allowJs": true,
"checkJs": true,
"outDir": "./built/",
"outDir": "./temp/built/",
"strict": true,
"strictFunctionTypes": true,
"strictNullChecks": true,