Add more package types, allow for node snippets
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Builds the `Snippet` module.
|
||||
Builds the `_30s` module.
|
||||
*/
|
||||
const fs = require('fs-extra');
|
||||
const cp = require('child_process');
|
||||
@ -27,7 +27,10 @@ try {
|
||||
let exportStr = 'export default {';
|
||||
|
||||
for (const snippet of snippets) {
|
||||
const snippetData = fs.readFileSync(path.join(SNIPPETS_PATH, snippet), 'utf8');
|
||||
const snippetData = fs.readFileSync(
|
||||
path.join(SNIPPETS_PATH, snippet),
|
||||
'utf8'
|
||||
);
|
||||
const snippetName = snippet.replace('.md', '');
|
||||
|
||||
const isNodeSnippet = tagDatabase
|
||||
@ -35,27 +38,30 @@ try {
|
||||
.split('\n')[0]
|
||||
.includes('node');
|
||||
|
||||
if (!isNodeSnippet) {
|
||||
const importData = fs.readFileSync(IMPORTS);
|
||||
fs.writeFileSync(
|
||||
IMPORTS,
|
||||
importData + `\nimport { ${snippetName} } from './temp/${snippetName}.js'`
|
||||
);
|
||||
exportStr += `${snippetName},`;
|
||||
const importData = fs.readFileSync(IMPORTS);
|
||||
fs.writeFileSync(
|
||||
IMPORTS,
|
||||
importData + `\nimport { ${snippetName} } from './temp/${snippetName}.js'`
|
||||
);
|
||||
exportStr += `${snippetName},`;
|
||||
|
||||
fs.writeFileSync(
|
||||
`${TEMP_PATH}/${snippetName}.js`,
|
||||
'export ' + snippetData.match(codeRE)[1].replace('\n', '')
|
||||
);
|
||||
}
|
||||
const code = snippetData.match(codeRE)[1].replace('\n', '');
|
||||
|
||||
const toWrite = isNodeSnippet
|
||||
? `${code
|
||||
.replace('const ' + snippetName, 'export const ' + snippetName)
|
||||
// Prevents errors from being thrown in browser environment
|
||||
.replace('require(', 'typeof require !== "undefined" && require(')}`
|
||||
: `export ${code}`;
|
||||
|
||||
fs.writeFileSync(`${TEMP_PATH}/${snippetName}.js`, toWrite);
|
||||
}
|
||||
|
||||
exportStr += '}';
|
||||
|
||||
const importData = fs.readFileSync(IMPORTS);
|
||||
fs.writeFileSync(IMPORTS, importData + `\n${exportStr}`);
|
||||
fs.appendFileSync(IMPORTS, `\n${exportStr}`);
|
||||
|
||||
cp.execSync('rollup -c scripts/rollup.js');
|
||||
cp.execSync('node ./scripts/rollup.js');
|
||||
|
||||
fs.removeSync(TEMP_PATH);
|
||||
fs.unlink(IMPORTS);
|
||||
|
||||
@ -1,19 +1,58 @@
|
||||
import babel from 'rollup-plugin-babel';
|
||||
import minify from 'rollup-plugin-babel-minify';
|
||||
const fs = require('fs-extra');
|
||||
const { rollup } = require('rollup');
|
||||
const babel = require('rollup-plugin-babel');
|
||||
const minify = require('rollup-plugin-babel-minify');
|
||||
|
||||
export default {
|
||||
input: './imports.js',
|
||||
output: {
|
||||
file: './module/TSOC.js',
|
||||
format: 'umd',
|
||||
name: 'TSOC'
|
||||
},
|
||||
externalHelpers: true,
|
||||
plugins: [
|
||||
babel({
|
||||
presets: ['es2015-rollup'],
|
||||
plugins: ['transform-object-assign', 'transform-object-rest-spread']
|
||||
}),
|
||||
minify({ comments: false })
|
||||
]
|
||||
};
|
||||
const INPUT_FILE = './imports.js';
|
||||
const MODULE_NAME = '_30s';
|
||||
const DIST = './dist';
|
||||
|
||||
if (!fs.existsSync(DIST)) fs.mkdirSync(DIST);
|
||||
|
||||
const es5 = () => babel({ presets: [['env', { modules: false }]] });
|
||||
const min = () => minify({ comments: false });
|
||||
|
||||
(async () => {
|
||||
const bundle = await rollup({ input: INPUT_FILE });
|
||||
const bundleES5 = await rollup({ input: INPUT_FILE, plugins: [es5()] });
|
||||
const bundleMin = await rollup({ input: INPUT_FILE, plugins: [min()] });
|
||||
const bundleES5Min = await rollup({
|
||||
input: INPUT_FILE,
|
||||
plugins: [es5(), min()]
|
||||
});
|
||||
|
||||
// UMD ES2017
|
||||
await bundle.write({
|
||||
file: `${DIST}/${MODULE_NAME}.js`,
|
||||
name: MODULE_NAME,
|
||||
format: 'umd'
|
||||
});
|
||||
|
||||
// UMD ES2017 minified
|
||||
await bundleMin.write({
|
||||
file: `${DIST}/${MODULE_NAME}.min.js`,
|
||||
name: MODULE_NAME,
|
||||
format: 'umd'
|
||||
});
|
||||
|
||||
// UMD ES5
|
||||
await bundleES5.write({
|
||||
file: `${DIST}/${MODULE_NAME}.es5.js`,
|
||||
name: MODULE_NAME,
|
||||
format: 'umd'
|
||||
});
|
||||
|
||||
// UMD ES5 min
|
||||
await bundleES5Min.write({
|
||||
file: `${DIST}/${MODULE_NAME}.es5.min.js`,
|
||||
name: MODULE_NAME,
|
||||
format: 'umd'
|
||||
});
|
||||
|
||||
// ESM ES2017
|
||||
await bundle.write({
|
||||
file: `${DIST}/${MODULE_NAME}.esm.js`,
|
||||
name: MODULE_NAME,
|
||||
format: 'es'
|
||||
});
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user