materialuiupgraded
Version:
Material-UI's workspace package
69 lines (57 loc) • 2.13 kB
JavaScript
/* eslint-disable no-console */
import path from 'path';
import fse from 'fs-extra';
import glob from 'glob';
async function copyFile(file) {
const buildPath = path.resolve(__dirname, '../build/', path.basename(file));
await fse.copy(file, buildPath);
console.log(`Copied ${file} to ${buildPath}`);
}
function typescriptCopy(from, to) {
const files = glob.sync('**/*.d.ts', { cwd: from });
const cmds = files.map(file => fse.copy(path.resolve(from, file), path.resolve(to, file)));
return Promise.all(cmds);
}
async function createPackageFile() {
const packageData = await fse.readFile(path.resolve(__dirname, '../package.json'), 'utf8');
const { scripts, devDependencies, ...packageDataOther } = JSON.parse(packageData);
const newPackageData = {
...packageDataOther,
main: './index.js',
module: './index.es.js',
private: false,
};
const buildPath = path.resolve(__dirname, '../build/package.json');
await fse.writeFile(buildPath, JSON.stringify(newPackageData, null, 2), 'utf8');
console.log(`Created package.json in ${buildPath}`);
return newPackageData;
}
async function prepend(file, string) {
const data = await fse.readFile(file, 'utf8');
await fse.writeFile(file, string + data, 'utf8');
}
async function addLicense(packageData) {
const license = `/** @license Material-UI v${packageData.version}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
`;
await Promise.all(
['../build/index.js', '../build/index.es.js'].map(file =>
prepend(path.resolve(__dirname, file), license),
),
);
}
async function run() {
await ['README.md', '../../LICENSE'].map(file => copyFile(file));
const packageData = await createPackageFile();
await addLicense(packageData);
// TypeScript
const from = path.resolve(__dirname, '../src');
await Promise.all([
typescriptCopy(from, path.resolve(__dirname, '../build')),
typescriptCopy(from, path.resolve(__dirname, '../build/es')),
]);
}
run();