Skip to content

Commit

Permalink
chore(package): add exports and type properties to package.json
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdbradley committed Aug 15, 2020
1 parent 6a39788 commit 61e56da
Showing 1 changed file with 24 additions and 10 deletions.
34 changes: 24 additions & 10 deletions scripts/utils/write-pkg-json.ts
Expand Up @@ -2,35 +2,49 @@ import fs from 'fs-extra';
import path from 'path';
import { BuildOptions } from './options';


export function writePkgJson(opts: BuildOptions, pkgDir: string, pkgData: PackageData) {
pkgData.version = opts.version;
pkgData.private = true;

if (pkgData.main && !pkgData.main.startsWith('.')) {
pkgData.main = `./${pkgData.main}`;
}
if (pkgData.module && !pkgData.module.startsWith('.')) {
pkgData.module = `./${pkgData.module}`;
}
if (pkgData.types && !pkgData.types.startsWith('.')) {
pkgData.types = `./${pkgData.types}`;
}

if (pkgData.module && pkgData.main) {
pkgData.type = 'module';
pkgData.exports = {
import: pkgData.module,
require: pkgData.main,
};
}

// idk, i just like a nice pretty standardized order of package.json properties
const formatedPkg: any = {};
PROPS_ORDER.forEach(pkgProp => {
if (pkgProp in pkgData) {
formatedPkg[pkgProp] = pkgData[pkgProp]
formatedPkg[pkgProp] = pkgData[pkgProp];
}
});

fs.writeFileSync(
path.join(pkgDir, 'package.json'),
JSON.stringify(formatedPkg, null, 2) + '\n'
);
fs.writeFileSync(path.join(pkgDir, 'package.json'), JSON.stringify(formatedPkg, null, 2) + '\n');
}

const PROPS_ORDER = [
'name', 'version', 'description', 'main', 'module', 'browser', 'types', 'private'
];
const PROPS_ORDER = ['name', 'version', 'description', 'main', 'module', 'browser', 'types', 'exports', 'type', 'private'];

export interface PackageData {
name: string;
description: string;
main: string;
module?: string;
browser?: string;
exports?: any;
type?: string;
types?: string;
version?: string;
dependencies?: string[];
Expand All @@ -42,5 +56,5 @@ export interface PackageData {
homepage?: string;
repository?: any;
files?: string[];
bin?: {[key: string]: string};
bin?: { [key: string]: string };
}

0 comments on commit 61e56da

Please sign in to comment.