封装一个npm包

一、项目结构

├── .babelrc            // babel 配置 ├── .commitlintrc.js    // git commit 配置 ├── .eslintrc.js        // eslint 配置 ├── .gitignore          // git 忽略文件 ├── .npmignore          // npm 忽略文件 ├── README.md           // 项目介绍 ├── dist                // 生产目录 │   └── bundle.js       // 打包后的 js 文件 ├── package-lock.json  ├── package.json        // 项目配置 ├── src                 // 源文件目录 │   ├── index.js        // 入口文件 │   └── util.js         // 功能函数 └── webpack.config.js   // webpack 配置

二、开发

1、新建

mkdir package cd package npm init  

2、安装ESlint

(ESLint 是一个 可组装的 JavaScript 和 JSX 检查工具,可以用来保证写出语法正确、风格统一的代码)  

3、配置Commitlint

(commitlint 是一个代码的提交规范校验工具,优雅、清晰的提交历史方便团队协作和快速定位问题)  

(1)安装 Commitlint 脚手架与 Git Hook 工具

  npm install @commitlint/cli @commitlint/config-conventional husky --save-dev  

 (2)增加 commitlintrc

echo "module.exports = {extends: ['@commitlint/config-conventional']};" > .commitlintrc.js

 (3)配置 Git Hooks

 //package.json {   "husky": {       "hooks": {           "pre-commit": "eslint src --fix --ext .js",           "commit-msg": "commitlint -e"       }   }  

4、打包

(1)安装 webpack

  npm install webpack webpack-cli --save-dev

(2)增加 webpack.config.js

(组件一般需要提供 <script> 和 npm install 两种引入方式,所以我们打包时需要选择 umd 规范。)     const path = require('path');   module.exports = {   entry: './src/index.js',   output: {     path: path.resolve(__dirname, 'dist'),     filename: 'bundle.js',     library: 'package', // 导出变量名     libraryTarget: 'umd', // 所有的模块定义下都可运行的方式。它将在 CommonJS, AMD 环境下运行,或将模块导出到 global 下的变  量   } }  

(3)配置 npm 命令  

//package.json "scripts": {     "build": "webpack"

}

5、编译

(在我们开发组件库的过程中,可能会使用到一些 ES6、ES7 语法或者新的 API,而项目打包时为了加快打包构建速度会忽略到 node_modules 下的文件,所以组件最终应该提供一个编译好的 ES5 语法文件,这里我们使用 babel 和 babel polyfill 来编译组件.)  

(1)安装 Babel

 npm install @babel/core @babel/preset-env babel-loader @babel/plugin-transform-runtime @babel/runtime-corejs3 --save-dev  

(2)增加 .babelrc

   {   "presets": [     ["@babel/preset-env"]     ],   "plugins": [     [       "@babel/plugin-transform-runtime", {         "corejs": 3       }     ]   ] }  

( 3 ) Webpack 配置 babel-loader

(组件一般需要提供 <script> 和 npm install 两种引入方式,所以我们打包时需要选择 umd 规范。) const path = require('path'); module.exports = {   entry: './src/index.js',   output: {     path: path.resolve(__dirname, 'dist'),     filename: 'bundle.js',     library: 'package',     libraryTarget: 'umd',   },   module: {     rules: [{       test: /\.js$/,       loader: 'babel-loader',       exclude: /node_modules/,     }]   } }  

6、开发

新建一个 src 文件夹,增加 index.js 和 util.js 文件,然后我们运行 npm run build,可以看到 dist 目录下生成了一个打包后的 js 文件。
上一篇:018、测试流程和用例设计方法


下一篇:018-Python入门(函数)