tauri/tooling/api/scripts/after-build.cjs

55 lines
1.4 KiB
JavaScript

// Copyright 2019-2021 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
const { readFileSync, readdirSync, writeFileSync, copyFileSync } = require('fs')
const { copySync } = require('fs-extra')
/**
* append our api modules to `exports` in `package.json` then write it to `./dist`
*/
const pkg = JSON.parse(readFileSync('package.json', 'utf8'))
const modules = readdirSync('src').map((mod) => mod.replace('.ts', ''))
if (!pkg.exports) {
pkg.exports = {}
}
const outputPkg = {
...pkg,
exports: Object.assign(
{},
...modules.map((mod) => {
let temp = {}
let key = `./${mod}`
if (mod === 'index') {
key = '.'
}
temp[key] = {
import: `./${mod}.js`,
require: `./${mod}.cjs`
}
return temp
}),
// if for some reason in the future we manually add something in the `exports` field
// this will ensure it doesn't get overwritten by the logic above
{ ...pkg.exports }
)
}
writeFileSync('dist/package.json', JSON.stringify(outputPkg, undefined, 2))
/**
* copy necessary files like `CHANGELOG.md` , `README.md` and Licenses to `./dist`
*/
const dir = readdirSync('.')
const files = [
...dir.filter((f) => f.startsWith('LICENSE')),
...dir.filter((f) => f.endsWith('.md'))
]
files.forEach((f) => copyFileSync(f, `dist/${f}`))
/**
* copy typescript src files to `./dist`
*/
copySync('src', 'dist')