You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
// Porcess generated lib files.
|
|
// Like adding js extension in the import statement.
|
|
|
|
const { transformImport } = require('./transformImport');
|
|
const globby = require('globby');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const chalk = require('chalk');
|
|
const rollup = require('rollup');
|
|
const nodeResolve = require('@rollup/plugin-node-resolve').default;
|
|
|
|
function addJsExtension(moduleName) {
|
|
// Ignore 'tslib'
|
|
if (!(moduleName.startsWith('.'))) {
|
|
return moduleName;
|
|
}
|
|
if (moduleName.endsWith('.ts')) {
|
|
// Replace ts with js
|
|
return moduleName.replace(/\.ts$/, '.js');
|
|
}
|
|
else if (moduleName.endsWith('.js')) {
|
|
return moduleName;
|
|
}
|
|
else {
|
|
return moduleName + '.js'
|
|
}
|
|
}
|
|
|
|
async function transform() {
|
|
const libFiles = await globby([
|
|
'**/*.js'
|
|
], {
|
|
cwd: path.join(__dirname, '../lib'),
|
|
absolute: true
|
|
});
|
|
|
|
if (libFiles.length === 0) {
|
|
throw new Error('No lib files found.')
|
|
}
|
|
|
|
for (let file of libFiles) {
|
|
const code = fs.readFileSync(file, 'utf-8');
|
|
fs.writeFileSync(file, transformImport(code, addJsExtension), 'utf-8');
|
|
}
|
|
|
|
// Transform index;
|
|
const indexFile = path.join(__dirname, '../index.js');
|
|
fs.writeFileSync(
|
|
indexFile,
|
|
transformImport(
|
|
fs.readFileSync(indexFile, 'utf-8'),
|
|
(mduleName) => addJsExtension(mduleName).replace('./src', './lib')
|
|
)
|
|
)
|
|
}
|
|
|
|
transform().then(() => {
|
|
console.log(chalk.green('Added .js extensions.'));
|
|
console.log(chalk.gray('Start testing generated libs...'));
|
|
}).then(() => {
|
|
return rollup.rollup({
|
|
input: path.resolve(__dirname, '../index.js'),
|
|
plugins: [nodeResolve()]
|
|
});
|
|
}).then(() => {
|
|
console.log(chalk.green('Libs can be bundled!'));
|
|
}); |