UNPKG

2.96 kBJavaScriptView Raw
1/* eslint-disable no-template-curly-in-string */
2const path = require('path');
3
4const meta = require('user-meta');
5const gitUsername = require('git-username');
6const { json, install } = require('mrm-core');
7
8const packages = ['schema-utils', 'loader-utils'];
9
10const devPackages = [
11 // Utilities
12 'del',
13 'del-cli',
14 'cross-env',
15 'memory-fs',
16 'standard-version',
17 '@commitlint/cli',
18 '@commitlint/config-conventional',
19 'commitlint-azure-pipelines-cli',
20 'husky',
21 'npm-run-all',
22
23 // Jest
24 'jest',
25 'jest-junit',
26 'babel-jest',
27
28 // Babel
29 '@babel/cli',
30 '@babel/core',
31 '@babel/preset-env',
32
33 // ESLint
34 'eslint',
35 'eslint-plugin-import',
36 'eslint-config-prettier',
37 'lint-staged',
38 'prettier',
39
40 // Webpack
41 'webpack',
42
43 // Webpack Contrib
44 '@webpack-contrib/defaults',
45 '@webpack-contrib/eslint-config-webpack',
46];
47
48module.exports = () => {
49 const { name } = meta;
50 const github = gitUsername();
51 const packageName = path.basename(process.cwd());
52 const repository = `${github}/${packageName}`;
53
54 const file = json('package.json');
55 const existing = file.get();
56
57 json('package.json')
58 .set({
59 name: existing.name || `${packageName}`,
60 version: existing.version || '1.0.0',
61 description: existing.description || '',
62 license: existing.license || 'MIT',
63 repository: `${repository}`,
64 author: existing.author || `${name}`,
65 homepage: `https://github.com/${repository}`,
66 bugs: `https://github.com/${repository}/issues`,
67 main: existing.main || 'dist/cjs.js',
68 engines: {
69 node: `>= 8.9.0`,
70 },
71 scripts: {
72 start: 'npm run build -- -w',
73 prebuild: 'npm run clean',
74 build:
75 'cross-env NODE_ENV=production babel src -d dist --ignore "src/**/*.test.js" --copy-files',
76 clean: 'del-cli dist',
77 commitlint: 'commitlint --from=master',
78 'lint:prettier':
79 'prettier "{**/*,*}.{js,json,md,yml,css,ts}" --list-different',
80 'lint:js': 'eslint --cache src test',
81 lint: 'npm-run-all -l -p "lint:**"',
82 prepare: 'npm run build',
83 release: 'standard-version',
84 security: 'npm audit',
85 'test:only': 'cross-env NODE_ENV=test jest',
86 'test:watch': 'cross-env NODE_ENV=test jest --watch',
87 'test:coverage':
88 'cross-env NODE_ENV=test jest --collectCoverageFrom="src/**/*.js" --coverage',
89 pretest: 'npm run lint',
90 test: 'cross-env NODE_ENV=test npm run test:coverage',
91 defaults: existing.scripts.defaults || 'webpack-defaults',
92 },
93 files: existing.files || ['dist/', 'lib/', 'index.js'],
94 peerDependencies: existing.peerDependencies || { webpack: '^4.0.0' },
95 dependencies: existing.dependencies || {},
96 devDependencies: existing.devDependencies || {},
97 keywords: existing.keywords || ['webpack'],
98 })
99 .save();
100
101 install(packages, { dev: false });
102 install(devPackages);
103};