UNPKG

6.6 kBMarkdownView Raw
1# @sweet-milktea/milktea
2
3## 使用
4
5## 如何使用
6
71. 在工程目录下创建`.sweetrc.js``sweet.config.mjs`文件,然后通过cli工具运行。(支持typescript,即`.sweetrc.ts``sweet.config.ts`文件)
8
92. 在node内运行函数。
10
11```javascript
12import webpack from 'webpack';
13import {
14 dll as dllConfig, // dll编译配置
15 config as webpackConfig, // webpack配置
16 serverRenderConfig, // webpack服务器端渲染配置
17 callback, // webpack的回调函数
18 callbackOnlyError // webpack的回调函数(只显示错误信息)
19} from '@sweet-milktea/milktea';
20
21// sweetConfig { SweetConfig | string | null | undefined }: webpack配置,覆盖文件,优先级最高
22// mode { string }: 开发模式 development,生产模式 production
23// webpackLog { 'progress' | 'stats' }: 日志输出类型。progress:进度条,stats:传统的输出方式。默认为progress
24// hot { boolean }: 添加webpack.HotModuleReplacementPlugin插件,开启热更新功能
25// socket { 'sockjs' | 'ws' }: socket类型。默认为`sockjs`,也可以配置为`ws`。
26const compiler = webpack(
27 await webpackConfig({
28 // 配置项
29 sweetConfig: null,
30 mode: 'development',
31 webpackLog: 'progress',
32 hot: true,
33 socket: 'sockjs'
34 })
35);
36
37compiler.run(callback);
38```
39
40## 配置文件`.sweetrc.js`说明
41
42### 使用方法
43
44根目录下创建`.sweetrc.js`文件。代码如下所示:
45
46```javascript
47module.exports = {
48 ... // 配置
49};
50```
51
52
53
54```javascript
55module.exports = function(info) {
56 return {
57 ... // 配置
58 };
59};
60```
61
62### 配置项
63
64* mode `{ string }` : 开发模式还是生产模式
65* dll `{ Array<string> }` : 配置需要编译的dll模块
66* entry `{ any }` : 文件入口(参考webpack)
67* output `{ any }` : 文件出口(参考webpack)
68* alias `{ object }` : 模块别名(参考webpack)
69* externals `{ object }` : 外部扩展(参考webpack)
70* resolve `{ object }` : 解析(参考webpack)
71* devtool `{ string }`: 设置SourceMap的类型
72* rules `{ Array<object> }` : 自定义规则
73* noParse `RegExp | Array<RegExp> | Function` : 防止解析任何与给定正则表达式相匹配的文件(参考webpack)
74* plugins `{ Array<any> }` : 自定义webpack插件
75* javascript(js) `{ object }` : javascript配置
76 * targets `{ object }` : 配置@babel/preset-env的编译目标
77 * ecmascript `{ boolean }` : 是否编译到ecmascript的最新语法(即不使用@babel/preset-env,通常适用于node、nwjs和electron)
78 * polyfill `{ boolean }` : 使用babel-plugin-polyfill-{name}相关插件
79 * typescript `{ boolean }` : 是否使用typescript编译(即使用@babel/preset-typescript)
80 * presets `{ Array<any> }` : 自定义presets
81 * plugins `{ Array<any> }` : 自定义plugins
82 * exclude `{ RegExp }` : exclude规则
83 * include `{ RegExp }` : include规则
84* typescript(ts) `{ object }` : typescript配置
85 * configFile `{ string }` : typescript的配置文件
86 * presets `{ Array<any> }` : 自定义babel的presets
87 * plugins `{ Array<any> }` : 自定义babel的plugins
88 * exclude `{ RegExp }` : exclude规则
89 * include `{ RegExp }` : include规则
90 * forkTsCheckerWebpackPlugin `{ boolean }` : 设置为false时,关闭fork-ts-checker-webpack-plugin插件注入
91* sass `{ object }` : sass配置
92 * modules `{ boolean }` : 开启css-in-modules
93 * exclude `{ RegExp }` : exclude规则
94 * include `{ RegExp }` : include规则
95 * additionalData `{ string | Function }` : 注入sass变量(参考sass-loader)
96* css `{ object }` : css配置(默认使用less)
97 * modules `{ boolean }` : 开启css-in-modules
98 * exclude `{ RegExp }` : exclude规则
99 * include `{ RegExp }` : include规则
100 * modifyVars `{ object }` : 注入less变量(参考less-loader)
101 * additionalData `{ string | Function }` : (参考less-loader)
102* html `{ Array<object> }` : html配置(默认使用pug)
103 * template `{ string }` : html模板文件地址
104 * 其他`html-webpack-plugin`的配置
105* frame `{ string }` : 值为`react``vue`,是否为react或vue模式,并自动注入loaders和plugins
106* chainWebpack `{ Function }` : 通过`webpack-chain`的API扩展或修改webpack配置
107* filesMap `{ boolean | object }` : 输出`filesMap.json`文件,记录了文件的映射
108* hot `{ boolean }` : 添加**webpack.HotModuleReplacementPlugin**插件,开启热更新功能
109
110下面的配置是关于服务器端渲染的
111
112* serverRender `{ boolean }` : 是否开启服务器端渲染
113* severEntry `{ any }` : 服务器端的文件入口(参考webpack)
114* serverOutput `{ any }` : 服务器端文件出口(参考webpack)
115* serverExternals `{ object }` : 服务器端的外部扩展(参考webpack)
116* serverDevtool `{ string }` : 服务器端的SourceMap的类型(参考webpack)
117* serverChainWebpack`{ Function }` : 通过`webpack-chain`的API扩展或修改SSR的webpack配置
118
119### 关于vue
120
121如果使用vue,需要手动安装`@vue/babel-plugin-jsx`(vue3)、`vue-loader``vue-svg-loader@0.17.0-beta.1``@vue/compiler-sfc`(vue3)。
122
123### 关于typescript
124
125使用typescript,需要手动安装`typescript``ts-loader`
126如果`js.typescript``true`,则不会配置ts-loader,且ts配置无效。因为这时typescript编译使用的是babel。
127
128### info
129
130info是当前环境的信息。
131
132* info.environment:当前环境,可能的值为`dll``client``server`。分别为编译dll文件、编译浏览器端代码、编译node端代码。
133
134## javascript
135
136`.ignore.js`结尾的文件不会被babel编译。
137这是由于`new Worker(new URL('./worker.js', import.meta.url))`语法会被babel编译,导致webpack无法解析文件入口,所以添加了忽略的文件类型。
138
139## 引入svg
140
141在react或vue项目中,如果svg文件匹配`*.component.svg`,则文件作为组件引入,否则作为图片地址引入。
142
143```javascript
144import svgUrl from './image.svg';
145import SvgComponent from './image.component.svg';
146// svgUrl:svg的图片地址
147// SvgComponent:svg作为vue组件
148export default function(props) {
149 return [
150 <img key="0" src={ svgUrl } />,
151 <SvgComponent key="1" />
152 ];
153}
154```
155
156## [api、服务器端渲染](https://github.com/duan602728596/sweet/blob/master/packages/server/README.md)
157
158## 环境变量
159
160内置了环境变量,根据环境变量判断不同的编译环境。
161
162* `process.env.SWEET_SERVER_RENDER`:判断当前环境是否为服务器端渲染。
163
164## 使用typescript
165
166在项目内添加`tsconfig.json`文件。
\No newline at end of file