@huideyeren/type-gimei
Version:
type-gimei generates Japanese Language random data.
95 lines (77 loc) • 2.49 kB
JavaScript
;
let pkg = require('./package');
let fs = require('fs-extra');
let mkdirp = require('mkdirp');
let klawSync = require('klaw-sync');
let path = require('path');
const ROOT = 'dist/';
const CJS_ROOT = ROOT + 'cjs/';
const ESM5_ROOT = ROOT + 'esm5/';
const ESM2015_ROOT = ROOT + 'esm2015/';
const TYPE_ROOT = ROOT + 'typings/';
const PKG_ROOT = ROOT + 'package/';
const DATA_ROOT = PKG_ROOT + 'data/';
const CJS_PKG = PKG_ROOT + '';
const ESM5_PKG = PKG_ROOT + '_esm5/';
const ESM2015_PKG = PKG_ROOT + '_esm2015/';
const SRC_ROOT_PKG = PKG_ROOT + 'src/';
const TYPE_PKG = PKG_ROOT;
function copySources(rootDir, packageDir, ignoreMissing) {
if (!fs.existsSync(rootDir)) {
if (ignoreMissing) {
return;
} else {
throw 'Source root dir does not exist!';
}
}
fs.copySync(rootDir, packageDir);
fs.copySync('./README.md', packageDir + 'README.md');
}
// dist/package, dist/package/src
// npmで配布時のpathに解決する
function cleanSourceMapRoot(mapRoot, sourcesRoot) {
klawSync(mapRoot, {filter: (item) => item.path.endsWith('.js.map')}).
map(f => f.path).
forEach(fName => {
const sourceMap = fs.readJsonSync(fName);
sourceMap.sources = sourceMap.sources.map(s => {
const sRel = path.relative(path.parse(fName).dir,
path.resolve(path.join(sourcesRoot, s)),
);
return sRel;
});
delete sourceMap.sourceRoot;
fs.writeJsonSync(fName, sourceMap);
});
}
delete pkg.scripts;
// dist/package
fs.removeSync(PKG_ROOT);
let rootPackageJson = Object.assign({}, pkg, {
name: 'type-gimei',
main: './index.js',
typings: './index.d.ts',
module: './_esm5/index.js',
es2015: './_esm2015/index.js',
});
// dist/package
mkdirp.sync(PKG_ROOT);
// dist/package/data
mkdirp.sync(DATA_ROOT);
fs.copySync('src/data/', DATA_ROOT);
// src/ -> dist/package/src
copySources('src/', SRC_ROOT_PKG);
// dist/cjs/ -> dist/package/
copySources(CJS_ROOT, CJS_PKG);
// dist/package -> dist/package/src
// for CJS
cleanSourceMapRoot(PKG_ROOT, SRC_ROOT_PKG);
// dist/typings -> dist/package
fs.copySync(TYPE_ROOT, TYPE_PKG);
// dist/esm5 -> dist/package/_esm5
copySources(ESM5_ROOT, ESM5_PKG, true);
cleanSourceMapRoot(ESM5_PKG, SRC_ROOT_PKG);
// dist/esm2015 -> dist/package/_esm2015
copySources(ESM2015_ROOT, ESM2015_PKG, true);
cleanSourceMapRoot(ESM2015_PKG, SRC_ROOT_PKG);
fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson, {spaces: 2});