Refactor rollup config

Add config for
- production
- docs

Add eslint

Remove unused dependencies
This commit is contained in:
Faris Ansari 2018-04-15 22:20:18 +05:30
parent 5ff72dfcee
commit 98afce65ac
5 changed files with 614 additions and 555 deletions

View File

@ -1,2 +1,2 @@
dist dist
docs/frappe-datatable.js docs

View File

@ -1,10 +1,4 @@
{ {
"ecmaFeatures": {
"globalReturn": true,
"jsx": true,
"modules": true
},
"parserOptions": { "parserOptions": {
"ecmaVersion": 6, "ecmaVersion": 6,
"sourceType": "module" "sourceType": "module"

View File

@ -6,25 +6,26 @@
"scripts": { "scripts": {
"start": "yarn run dev", "start": "yarn run dev",
"build": "rollup -c", "build": "rollup -c",
"production": "rollup -c --production",
"build:docs": "rollup -c --docs",
"dev": "rollup -c -w", "dev": "rollup -c -w",
"test": "mocha --compilers js:babel-core/register --colors ./test/*.spec.js", "test": "mocha --compilers js:babel-core/register --colors ./test/*.spec.js"
"test:watch": "mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js"
}, },
"devDependencies": { "devDependencies": {
"chai": "3.5.0", "chai": "3.5.0",
"cssnano": "^3.10.0",
"deepmerge": "^2.0.1", "deepmerge": "^2.0.1",
"eslint": "3.19.0", "eslint-config-airbnb": "^16.1.0",
"eslint-loader": "1.7.1", "eslint-config-airbnb-base": "^12.1.0",
"eslint-plugin-import": "^2.11.0",
"mocha": "3.3.0", "mocha": "3.3.0",
"postcss-cssnext": "^3.1.0", "postcss-cssnext": "^3.1.0",
"postcss-nested": "^3.0.0", "postcss-nested": "^3.0.0",
"precss": "^3.1.0",
"rollup-plugin-commonjs": "^8.3.0", "rollup-plugin-commonjs": "^8.3.0",
"rollup-plugin-eslint": "^4.0.0",
"rollup-plugin-json": "^2.3.0", "rollup-plugin-json": "^2.3.0",
"rollup-plugin-node-resolve": "^3.0.3", "rollup-plugin-node-resolve": "^3.0.3",
"rollup-plugin-postcss": "^1.2.8", "rollup-plugin-postcss": "^1.2.8",
"rollup-plugin-uglify": "^3.0.0" "rollup-plugin-uglify-es": "^0.0.1"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -1,52 +1,108 @@
import json from 'rollup-plugin-json'; import json from 'rollup-plugin-json';
// import uglify from 'rollup-plugin-uglify'; import uglify from 'rollup-plugin-uglify-es';
import nodeResolve from 'rollup-plugin-node-resolve'; import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs'; import commonjs from 'rollup-plugin-commonjs';
import postcss from 'rollup-plugin-postcss'; import postcss from 'rollup-plugin-postcss';
import nested from 'postcss-nested'; import nested from 'postcss-nested';
import cssnext from 'postcss-cssnext'; import cssnext from 'postcss-cssnext';
// import cssnano from 'cssnano'; import eslint from 'rollup-plugin-eslint';
import merge from 'deepmerge';
const dev = { const production = process.argv[3] === '--production';
const baseJS = {
input: 'src/index.js', input: 'src/index.js',
output: [{ output: {
file: 'dist/frappe-datatable.js', file: '',
format: 'iife',
name: 'DataTable',
globals: { globals: {
sortablejs: 'Sortable', sortablejs: 'Sortable',
'clusterize.js': 'Clusterize' 'clusterize.js': 'Clusterize'
} }
}, { },
file: 'docs/assets/frappe-datatable.js',
format: 'iife',
name: 'DataTable',
globals: {
sortablejs: 'Sortable',
'clusterize.js': 'Clusterize'
}
}],
plugins: [ plugins: [
json(), json(),
eslint({
exclude: '**/*.json'
}),
nodeResolve(), nodeResolve(),
commonjs(), commonjs()
],
external: ['sortablejs', 'clusterize.js']
};
const baseCSS = {
input: 'src/style.css',
output: {
file: ''
},
plugins: [
postcss({ postcss({
extract: 'dist/frappe-datatable.css', extract: true,
minimize: production,
plugins: [ plugins: [
nested(), nested(),
cssnext() cssnext()
] ]
}) })
], ]
external: ['sortablejs', 'clusterize.js']
}; };
export default [ const devIIFE = merge(baseJS, {
dev, output: {
Object.assign({}, dev, { file: 'dist/frappe-datatable.js',
output: { format: 'iife',
format: 'cjs', name: 'DataTable'
file: 'dist/frappe-datatable.cjs.js' }
} });
})
]; const devCjs = merge(baseJS, {
output: {
file: 'dist/frappe-datatable.cjs.js',
format: 'cjs'
}
});
const devCSS = merge(baseCSS, {
output: {
file: 'dist/frappe-datatable.css',
format: 'cjs'
}
});
// production
const prodIIFE = merge(devIIFE, {
output: {
file: 'dist/frappe-datatable.min.js'
},
plugins: [
uglify()
]
});
const prodCSS = merge(devCSS, {
output: {
file: 'dist/frappe-datatable.min.css'
}
});
// docs
const docJS = merge(devIIFE, {
output: {
file: 'docs/assets/frappe-datatable.js'
}
});
const docCSS = merge(devCSS, {
output: {
file: 'docs/assets/frappe-datatable.css'
}
});
const developmentAssets = [devIIFE, devCjs, devCSS];
const documentationAssets = [docJS, docCSS];
const productionAssets = [prodIIFE, prodCSS];
const docs = process.argv[3] === '--docs';
const assets = docs ? documentationAssets : production ? productionAssets : developmentAssets;
export default assets;

1032
yarn.lock

File diff suppressed because it is too large Load Diff