Add more package types, allow for node snippets
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,5 +3,4 @@ currentSnippet\.js
|
|||||||
*.md.temp.js
|
*.md.temp.js
|
||||||
.idea
|
.idea
|
||||||
test.sh
|
test.sh
|
||||||
dist/
|
|
||||||
test/
|
test/
|
||||||
|
|||||||
1060
package-lock.json
generated
1060
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
@ -1,18 +1,23 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"babel-preset-env": "^1.6.1",
|
||||||
|
"chalk": "^2.3.0",
|
||||||
"fs-extra": "^4.0.2",
|
"fs-extra": "^4.0.2",
|
||||||
"html-minifier": "^3.5.7",
|
"html-minifier": "^3.5.7",
|
||||||
"markdown-it": "^8.4.0",
|
"markdown-it": "^8.4.0",
|
||||||
"node-sass": "^4.7.2",
|
"node-sass": "^4.7.2",
|
||||||
"prettier": "^1.9.2",
|
"prettier": "^1.9.2",
|
||||||
|
"rollup": "^0.53.2",
|
||||||
|
"rollup-plugin-babel": "^3.0.3",
|
||||||
|
"rollup-plugin-babel-minify": "^3.1.2",
|
||||||
"semistandard": "^11.0.0",
|
"semistandard": "^11.0.0",
|
||||||
"chalk": "^2.3.0",
|
|
||||||
"tape": "^4.8.0"
|
"tape": "^4.8.0"
|
||||||
},
|
},
|
||||||
"name": "30-seconds-of-code",
|
"name": "30-seconds-of-code",
|
||||||
"description": "A collection of useful JavaScript snippets.",
|
"description": "A collection of useful JavaScript snippets.",
|
||||||
"version": "1.0.0",
|
"version": "0.0.0",
|
||||||
"main": "index.js",
|
"main": "dist/_30s.js",
|
||||||
|
"module": "dist/_30s.esm.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"builder": "node ./scripts/build.js",
|
"builder": "node ./scripts/build.js",
|
||||||
"linter": "node ./scripts/lint.js",
|
"linter": "node ./scripts/lint.js",
|
||||||
@ -25,7 +30,11 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/Chalarangelo/30-seconds-of-code.git"
|
"url": "git+https://github.com/Chalarangelo/30-seconds-of-code.git"
|
||||||
},
|
},
|
||||||
"keywords": ["javascript", "snippets", "list"],
|
"keywords": [
|
||||||
|
"javascript",
|
||||||
|
"snippets",
|
||||||
|
"list"
|
||||||
|
],
|
||||||
"author": "Chalarangelo (chalarangelo@gmail.com)",
|
"author": "Chalarangelo (chalarangelo@gmail.com)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Builds the `Snippet` module.
|
Builds the `_30s` module.
|
||||||
*/
|
*/
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const cp = require('child_process');
|
const cp = require('child_process');
|
||||||
@ -27,7 +27,10 @@ try {
|
|||||||
let exportStr = 'export default {';
|
let exportStr = 'export default {';
|
||||||
|
|
||||||
for (const snippet of snippets) {
|
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 snippetName = snippet.replace('.md', '');
|
||||||
|
|
||||||
const isNodeSnippet = tagDatabase
|
const isNodeSnippet = tagDatabase
|
||||||
@ -35,7 +38,6 @@ try {
|
|||||||
.split('\n')[0]
|
.split('\n')[0]
|
||||||
.includes('node');
|
.includes('node');
|
||||||
|
|
||||||
if (!isNodeSnippet) {
|
|
||||||
const importData = fs.readFileSync(IMPORTS);
|
const importData = fs.readFileSync(IMPORTS);
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
IMPORTS,
|
IMPORTS,
|
||||||
@ -43,19 +45,23 @@ try {
|
|||||||
);
|
);
|
||||||
exportStr += `${snippetName},`;
|
exportStr += `${snippetName},`;
|
||||||
|
|
||||||
fs.writeFileSync(
|
const code = snippetData.match(codeRE)[1].replace('\n', '');
|
||||||
`${TEMP_PATH}/${snippetName}.js`,
|
|
||||||
'export ' + 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 += '}';
|
exportStr += '}';
|
||||||
|
|
||||||
const importData = fs.readFileSync(IMPORTS);
|
fs.appendFileSync(IMPORTS, `\n${exportStr}`);
|
||||||
fs.writeFileSync(IMPORTS, importData + `\n${exportStr}`);
|
|
||||||
|
|
||||||
cp.execSync('rollup -c scripts/rollup.js');
|
cp.execSync('node ./scripts/rollup.js');
|
||||||
|
|
||||||
fs.removeSync(TEMP_PATH);
|
fs.removeSync(TEMP_PATH);
|
||||||
fs.unlink(IMPORTS);
|
fs.unlink(IMPORTS);
|
||||||
|
|||||||
@ -1,19 +1,58 @@
|
|||||||
import babel from 'rollup-plugin-babel';
|
const fs = require('fs-extra');
|
||||||
import minify from 'rollup-plugin-babel-minify';
|
const { rollup } = require('rollup');
|
||||||
|
const babel = require('rollup-plugin-babel');
|
||||||
|
const minify = require('rollup-plugin-babel-minify');
|
||||||
|
|
||||||
export default {
|
const INPUT_FILE = './imports.js';
|
||||||
input: './imports.js',
|
const MODULE_NAME = '_30s';
|
||||||
output: {
|
const DIST = './dist';
|
||||||
file: './module/TSOC.js',
|
|
||||||
format: 'umd',
|
if (!fs.existsSync(DIST)) fs.mkdirSync(DIST);
|
||||||
name: 'TSOC'
|
|
||||||
},
|
const es5 = () => babel({ presets: [['env', { modules: false }]] });
|
||||||
externalHelpers: true,
|
const min = () => minify({ comments: false });
|
||||||
plugins: [
|
|
||||||
babel({
|
(async () => {
|
||||||
presets: ['es2015-rollup'],
|
const bundle = await rollup({ input: INPUT_FILE });
|
||||||
plugins: ['transform-object-assign', 'transform-object-rest-spread']
|
const bundleES5 = await rollup({ input: INPUT_FILE, plugins: [es5()] });
|
||||||
}),
|
const bundleMin = await rollup({ input: INPUT_FILE, plugins: [min()] });
|
||||||
minify({ comments: false })
|
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