mh-two-thousand-and-two
2024-03-25 b8c93990f3fa5e50a8aca16bdc9c2758168aa0fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// 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!'));
});