0.3.3 • Published 4 years ago
@surmon-china/abc-factory v0.3.3
abc-factory
📦 JavaScript bundler/linter/tester, by Rollup/ESlint/Jest.
🏭 JavaScript 开发生产一条龙工具,零配置、开箱即用。
Usage
yarn add @surmon-china/abc-factory --dev
package.json
"scripts": {
"build": "abc build",
"lint": "abc lint --ext .ts,.vue src",
"test": "abc test",
"test:watch": "abc test --watch -i",
}
yarn build
Config
Create abc.config.js
in project root. More detail is here.
abc.config.js
type: AbcConfigObject | AbcConfigObject[] | (defaultRollupConfig) => RollupConfog
.
config object
// abc.config.js
module.exports = {
// entry file, default: 'src/index.js'
entry?: string
// lib name, default: auto get by package.json.name, like: 'VueAwesomeSwiper'
name?: string
// out file name, default: auto get by package.json.name, like: 'vue-awesome-swiper'
fileName?: string
// output dir, default: 'dist'
outDir?: string
// output bundle types, default: ['umd', 'esm', 'cjs']
targets?: string[]
// exports moudle type, default: 'auto'
exports?: string
// @rollup/plugin-replace config, default { PACKAGE_VERSION, 'process.env.NODE_ENV' }
replace?: object
// parser type, default: 'buble', options: 'buble' | 'babel'
parser?: string
// parser plugin options, default rollup-plugin-buble options
parserOptions?: object // {}
// todo file formats, default: ['.mjs', '.js', '.jsx', '.json', '.ts']
resolve?: string[]
// enable vue plugin, default: auto get by package.json.<xxx>dependencies
vue?: false | { /* rollup-plugin-vue config */ }
// enable eslint plugin (before build), default: false
eslint?: false | { /* rollup-plugin-eslint config */ }
// enable typescript plugin (before build), default: auto get by package.json.dependencies
typescript?: false | { /* rollup-plugin-typescript2 config */ }
// compression
minimize?: boolean // true
// file header
banner?: string // default: https://github.com/surmon-china/abc-factory/blob/master/lib/default.js#L18
// Refer to https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
// list external dependencies, exactly the way it is written in the import statement.
external?: string[]
// Refer to https://rollupjs.org/guide/en#output-globals for details
// Provide global variable names to replace your external imports
globals?: {
[key: string]: string
}
}
config function
// abc.config.js
module.exports = (defaultRollupConfig): RollupConfog => {
// overwrite the default Rollup confog
// ...
return RollupConfig
}
Preset (about abc provide preset configs)
{
"extends": "./node_modules/@surmon-china/abc-factory/preset/tsconfig/vue",
// your options like:
"compilerOptions": {
"declaration": true,
"declarationDir": "types",
"baseUrl": ".",
// ...
},
"exclude": [
"node_modules",
"dist",
// ...
]
}
const abcJestConfig = require('@surmon-china/abc-factory/preset/jest/vue.typescript')
module.exports = {
...abcJestConfig,
rootDir: __dirname,
testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
moduleNameMapper: {
'^vue$': path.resolve(__dirname, './node_modules/vue/dist/vue.common.js'),
},
globals: {
'ts-jest': {
// https://kulshekhar.github.io/ts-jest/user/config/isolatedModules
isolatedModules: true
}
}
// ...
}
module.exports = {
extends: './node_modules/@surmon-china/abc-factory/preset/eslintrc/vue.typescript',
rules: {
// rules...
}
}