2023-03-12-【工程化】脚手架搭建手册

项目初始化

  • 初始化 package.json npm init
    字段说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
"name": "sun-arms",
"version": "1.0.0",
"description": "lint & tools",
// main 字段的值是入口文件,即使不包括在 files 字段里,也会被打包。
"main": "index.js",
// files 字段值的类型是字符串数组,数组里面的字符串填写需要发布到 NPM 的文件名。当然也可以在根目录下创建 .npmignore 文件,把不需要上传到 NPM 的文件名填进去。不过有些文件或者目录比如, README.md 或者 LICENSE.md 是默认就会被打包。也有默认不会被打包的目录或者文件,比如, node_modules 或者 .git。
"files": [
"dist",
...
],
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/zhangyingxuan/sun-arms.git"
},
"author": "zhangyingxuan",
"license": "ISC",
"bugs": {
"url": "https://github.com/zhangyingxuan/sun-arms/issues"
},
"homepage": "https://github.com/zhangyingxuan/sun-arms#readme",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
// browser 当需要打包多个版本时,设置 browser 字段,可以根据浏览器的不同环境变量,使用不同的版本
// unpkg 提供一个给 UNPKG, 用于支持 CDN 服务,有点类似 browser
// module 若项目中有封装模块,可以设置 module, 也就是设置一个模块的入口, 该字段目前比较前卫
// typings/types TypeScript 解析文件的入口, 该文件会被发布到 NPM, 并且可以被下载,为用户提供更加好的 IDE 支持。
// bin 若项目中包含一些可执行文件,可以把文件名在 bin 字段下, 当只有一个 Node.js 文件入口时, 可以是 string 值,当有多个的时候,可以用键值对的形式写。不过要执行这些文件,需要在文件头部加上 #!/usr/bin/env node
// man 若需要提供命令行输出文档,可以用 man 字段指明,当只有一个文件时, 可以是一个字符串值, 当有多个文件时, 可以是一个字符串数组。
// peerDependencies NPM v3开始,peerDependencies 字段需要自己配置,用于指定一个兼容项目的依赖,该字段的值是一个对象,对象的 key 是兼容包的名称,对象的值是该包的指定版本。
// optionalDependencies 字段用于设置一些项目中的可选包,这些包不一定要下载,但是却很有用,设置在该字段下后,对应的包只会在需要的时候被下载,比如 fsevents 模块,尽在 mac 下有效。
// bundledDependencies 字段是一个字符串数组,数组元素是需要跟最终包一起打包出去的依赖名称。
}

添加 .gitignore

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.DS_Store
node_modules
**/*/dist
**/*/es
**/*/lib
!**/sites/**/site/lib
# local env files
.env.local
.env.*.local
.idea
temp

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Editor directories and files
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# release packages
*.zip
*.gz
*.tar

初始化 lint

参考 2022-04-17-【工程化】vue3-vite4-ts配置eslint、stylelint、prettier

初始化 husky、commitlint

参考 2022-04-17-【工程化】vue3-vite4-ts配置husky、pre-commit

rollup 模块打包

参考文献

  • 安装依赖
1
2
3
pnpm install rollup --save-dev
pnpm install @rollup/plugin-commonjs --save-dev
pnpm install rollup --save-dev
  • 说明:@rollup/plugin-commonjs 支持依赖包转换为es模块化标准。 convert node_modules library to an ES module

  • 配置打包指令

1
"dev": "rollup -i src/main.js -o dist/bundle.js -f es"

-i指定要打包的文件,-i是–input的缩写。
src/index.js是-i的参数,即打包入口文件。
-o指定输出的文件,是–output.file或–file的缩写。(如果没有这个参数,则直接输出到控制台)
dist/bundle.js是-o的参数,即输出文件。
-f指定打包文件的格式,-f是–format的缩写。
es是-f的参数,表示打包文件使用ES6模块规范。
rollup支持的打包文件的格式有amd, cjs, es\esm, iife, umd。其中,amd为AMD标准,cjs为CommonJS标准,esm\es为ES模块标准,iife 为立即调用函数, umd同时支持amd、cjs和iife。

多指令执行

pnpm install npm-run-all -D


2023-03-12-【工程化】脚手架搭建手册
https://zhangyingxuan.github.io/2023-03-12-【工程化】脚手架搭建手册/
作者
blowsysun
许可协议