diff --git a/desktop/doctor/package.json b/desktop/doctor/package.json index 16b1dc1b5..3d14572e8 100644 --- a/desktop/doctor/package.json +++ b/desktop/doctor/package.json @@ -3,6 +3,7 @@ "version": "0.7.0", "description": "Utility for checking for issues with a flipper installation", "main": "lib/index.js", + "flipper:source": "src", "types": "lib/index.d.ts", "license": "MIT", "devDependencies": { diff --git a/desktop/package.json b/desktop/package.json index 8c5cdc82c..e332cb34d 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -9,6 +9,7 @@ "icon": "icon.png", "category": "facebook-intern", "privileged": true, + "license": "MIT", "build": { "appId": "flipper", "productName": "Flipper", @@ -77,7 +78,9 @@ "/static/globalTestSetup.js" ], "moduleNameMapper": { - "^flipper$": "/src/index.tsx" + "^flipper$": "/src", + "^flipper-doctor$": "/doctor/src", + "^flipper-pkg$": "/pkg/src" }, "clearMocks": true }, diff --git a/desktop/pkg/package.json b/desktop/pkg/package.json index 8f6e35e46..0c5acaee7 100644 --- a/desktop/pkg/package.json +++ b/desktop/pkg/package.json @@ -4,6 +4,7 @@ "description": "Utility for building and publishing Flipper plugins", "repository": "facebook/flipper", "main": "lib/index.js", + "flipper:source": "src", "types": "lib/index.d.ts", "license": "MIT", "bin": { diff --git a/desktop/scripts/build-utils.ts b/desktop/scripts/build-utils.ts index 0f48ae058..79b25ec07 100644 --- a/desktop/scripts/build-utils.ts +++ b/desktop/scripts/build-utils.ts @@ -74,15 +74,15 @@ export function compile(buildFolder: string, entry: string) { serializer: {}, transformer: { babelTransformerPath: path.join( - __dirname, - '..', + projectRoot, 'static', 'transforms', 'index.js', ), }, resolver: { - blacklistRE: /(\/|\\)(sonar|flipper|flipper-public)(\/|\\)(desktop)(\/|\\)(dist|doctor)(\/|\\)|(\.native\.js$)/, + resolverMainFields: ['flipper:source', 'module', 'main'], + blacklistRE: /\.native\.js$/, }, }, { @@ -118,8 +118,7 @@ export async function compileMain({dev}: {dev: boolean}) { watchFolders: [projectRoot], transformer: { babelTransformerPath: path.join( - __dirname, - '..', + projectRoot, 'static', 'transforms', 'index.js', @@ -127,7 +126,8 @@ export async function compileMain({dev}: {dev: boolean}) { }, resolver: { sourceExts: ['tsx', 'ts', 'js'], - blacklistRE: /(\/|\\)(sonar|flipper|flipper-public)(\/|\\)(desktop)(\/|\\)(dist|doctor)(\/|\\)|(\.native\.js$)/, + resolverMainFields: ['flipper:source', 'module', 'main'], + blacklistRE: /\.native\.js$/, }, }); await Metro.runBuild(config, { diff --git a/desktop/scripts/start-dev-server.ts b/desktop/scripts/start-dev-server.ts index 4db6d99c7..fb86b9283 100644 --- a/desktop/scripts/start-dev-server.ts +++ b/desktop/scripts/start-dev-server.ts @@ -82,15 +82,15 @@ function startMetroServer(app: Express) { watchFolders: [projectRoot], transformer: { babelTransformerPath: path.join( - __dirname, - '..', + projectRoot, 'static', 'transforms', 'index.js', ), }, resolver: { - blacklistRE: /(\/|\\)(sonar|flipper|flipper-public)(\/|\\)(desktop)(\/|\\)(dist|doctor)(\/|\\)|(\.native\.js$)/, + resolverMainFields: ['flipper:source', 'module', 'main'], + blacklistRE: /\.native\.js$/, resolveRequest: (context: any, moduleName: string, platform: string) => { if (moduleName.startsWith('./localhost:3000')) { moduleName = moduleName.replace('./localhost:3000', '.'); @@ -134,7 +134,7 @@ function startAssetServer( } shutdownElectron = launchElectron({ devServerURL: `http://localhost:${port}`, - bundleURL: `http://localhost:${port}/src/init.bundle?dev=true&platform=web&minify=false&excludeSource=false`, + bundleURL: `http://localhost:${port}/src/init.bundle`, electronURL: `http://localhost:${port}/index.dev.html`, }); res.end(); @@ -174,16 +174,20 @@ async function addWebsocket(server: http.Server) { // refresh the app on changes to the src folder // this can be removed once metroServer notifies us about file changes try { - const watchman = new Watchman(path.resolve(__dirname, '..', 'src')); + const watchman = new Watchman(path.resolve(__dirname, '..')); await watchman.initialize(); - await watchman.startWatchFiles( - '', - () => { - io.emit('refresh'); - }, - { - excludes: ['**/__tests__/**/*', '**/node_modules/**/*', '**/.*'], - }, + await Promise.all( + ['src', 'pkg', 'doctor'].map(dir => + watchman.startWatchFiles( + dir, + () => { + io.emit('refresh'); + }, + { + excludes: ['**/__tests__/**/*', '**/node_modules/**/*', '**/.*'], + }, + ), + ), ); } catch (err) { console.error( diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index 75ffaa9d7..dee48970b 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -13,11 +13,13 @@ "downlevelIteration": true, "skipLibCheck": true, "paths": { - "flipper": ["./src/index.tsx"], + "flipper": ["./src"], + "flipper-doctor": ["./doctor/src"], + "flipper-pkg": ["./pkg/src"], "live-plugin-manager": ["./types/live-plugin-manager.d.tsx"] }, "strict": true }, - "include": ["src/**/*", "static/**/*", "scripts/**/*", "types/*", "headless/*", "plugins/**/*"], + "include": ["src/**/*", "doctor/**/*", "pkg/**/*", "static/**/*", "scripts/**/*", "types/**/*", "headless/**/*", "plugins/**/*"], "exclude": ["node_modules", "**/*.spec.ts"] }