# @haina/npm 可复用的 npm 模块 支持 `ESM`(import) 和 `CommonJS`(require) ## Dev ### Package Structure ``` ├─build │ ├─cjs │ └─esm ├─dist │ ├── haina-npm-0.1.0.tgz │ ├── hooks-0.1.0.tgz │ ├── utils-0.1.0.tgz │ ├── utils-commons-0.1.0.tgz │ └── utils-request-0.1.0.tgz └─src ├─ index.js ├─ hooks/ └─ utils/ ``` ### Build & Pack ```sh # 打包各模块 npm run pack # 打包整个项目(各模块和root) npm run pack:all ``` 1. 生成导出文件 `index.js` 2. 创建`ESM`和`CommonJS` 版本 3. 打包 1. 打包`src`下的子文件夹 --> `hooks-0.1.10.tgz` `utils-0.1.10.tgz` … 2. `src/utils`下的模块, 分别单独打包 --> `utils-request-0.1.10.tgz` `utils-commons-0.1.10.tgz` … 3. 打包整个项目(root) --> `haina-npm-0.1.10.tgz` ### Serve #### FTP ## Usage ### 安装整个包 ```sh npm install http://xxxx/npm/haina-npm-0.1.0.tgz ``` ```js // import { commons, request, utils, hooks } from '@haina/npm'; // Import only common utilities import { isEmpty } from '@haina/npm/esm/utils/commons.js'; // Import only request utilities import { fetchJSON } from '@haina/npm/esm/utils/request.js'; ``` ### 安装单个模块 ```sh npm install http://xxxx/npm/utils-0.1.0.tgz npm install http://xxxx/npm/hooks-0.1.0.tgz ``` ```js import { commons, request } from '@haina/utils'; ``` ### 安装Utils的子模块 ```sh npm install http://xxxx/npm/utils-commons-0.1.0.tgz npm install https://research.hainatravel.com/npm/utils-commons-0.1.1.tgz ``` ```js import { isEmpty } from '@haina/utils-commons'; ```