factory for web application development
This is a factory for fbi v4
node v10+
$ npx fbi create @fbi-js/factory-webvue: template for vue web applicationreact: template for react web applicationmicro-main: template for Micro-fontends base applicationmicro-vue: template for Micro-fontends vue application
-
serve: start development serverfbi s
-
build: build files in specify env mode (default:production)fbi b
fbi field in package.json or .fbi.config.js in the project's root folder. This config specified the factory, template, and features used by the current project. e.g.:
// package.json
"fbi": {
"factory": {
"id": "@fbi-js/factory-web",
"version": "",
"template": "react",
"features": { "typescript": true, "admin": true }
}
}Each template has a built-in configuration. e.g.:
react:@fbi-js/webpack-config-reactvue:@fbi-js/webpack-config-vue
You can extends or customize webpack config based on the built-in configuration. Touch a webpack.config.js file in the project's root folder. Then you can write configuration in several ways:
-
plaint webpack config. docs
module.exports = { entry: './index.js', resolve: { alias: { // ... } } // ... }
-
config options. docs
const config = require('@fbi-js/webpack-config-react').default module.exports = config({ options: { isTs: true // ... } })
-
plaint webpack config + config options.
const config = require('@fbi-js/webpack-config-react').default module.exports = config({ options: { isTs: true // ... }, webpackConfig: { // plaint webpack config goes here } })
- eslint:
eslintConfigfield inpackage.json. docs - stylelint:
stylelintfield inpackage.json. docs - browserslist:
browserslistfield inpackage.json. docs - prettier:
prettierfield inpackage.json. docs
Build your own factory-web based on @fbi-js/factory-web,
Create a project
npx fbi create @fbi-js/factory-factory
npm i @fbi-js/factory-webCreate and modify files
// src/index.ts
import FactoryWebBase from '@fbi-js/factory-web'
import CommandX from './commands/my-command'
import TemplateX from './templates/my-template'
const { name, description } = require('../package.json')
export default class FactoryWeb extends FactoryWebBase {
id = name
description = description
// 1. replace default commands and templates
commands = [new CommandX(this)]
templates = [new TemplateX(this)]
constructor () {
super()
// 2. OR: extends default commands and templates
// this.commands.push(new CommandX(this))
// this.templates.push(new TemplateX(this))
}
}Compile ts files
yarn buildTest
fbi linkfbi createPlease make sure to read the Contributing Guide before making a pull request.
Thank you to all the people who already contributed to fbi factory!
Licensed under MIT.
- 生成 copys 和 renders 的路径