zoukankan      html  css  js  c++  java
  • 发布js插件zhen-chek(用来检测数据类型)到npm上

    今天想到js本身是弱类型,在实际项目中很多时候需要数据类型检测。于是打算做一个判断数据类型的js插件,发布到npm上面。

    基本思路:

    1,输入参数,便返回数据类型,所有数据类型如下

       '[object String]': 'string',
        "[object Boolean]": "boolean",
        "[object Number]": 'number',
        "[object Null]": 'null',
        "[object Undefined]": "undefined",
        "[object Array]": 'array',
        '[object Object]': 'object',
        '[object Set]': 'set',
        '[object Map]': 'map',
        '[object Symbol]':'symbol',
        '[object Function]':'function',
        '[object RegExp]':'regExp',
        '[object Window]':'window',
        'NaN':'NaN'

    使用的判断方法:Object.prototype.toString.call()

    2,利用webpack作为工程化工具,webpack.config.js

    var path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
    const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
    
    var config = {
        mode: 'development',
        entry: [
            path.resolve(__dirname, './src/example.js')
        ],
        output: {
            path: path.resolve(__dirname, 'dist'),
            filename: '[name].js',
            libraryTarget: "umd",  //一套完整的规范 cmd  amd 
        },
        devServer: {
            contentBase: './dist'
        },
        module: {
            rules: [
                {
                    test: /.js$/,
                    exclude: /(node_modules)/,
                    use: {
                        loader: 'babel-loader',
                        options: {
                            presets: ['@babel/preset-env']
                        }
                    }
                }
            ]
        },
        plugins: [
            new HtmlWebpackPlugin({
                filename: 'index.html',
                template: 'index.html',
                inject: true
            })
    
        ],
        optimization: {
            minimize: true,
    
            minimizer: [
              new UglifyJsPlugin({
                test: /.js(?.*)?$/i,
              }),
            ],
          }
    };
    
    module.exports = config;

    package.js

    {
      "name": "zhen-check",
      "version": "1.4.0",
      "description": "check type of data ",
      "main": "src/index.js",  // 注意这里是index的路径不要写为index.js
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "dev": "webpack-dev-server --inline --progress --config webpack.config.js",
        "prod": "webpack --config webpack.config.js"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.4.5",
        "@babel/preset-env": "^7.4.5",
        "babel-core": "^6.26.3",
        "babel-loader": "^8.0.6",
        "babel-preset-env": "^1.7.0",
        "html-webpack-plugin": "^3.2.0",
        "uglifyjs-webpack-plugin": "^2.1.3",
        "webpack": "^4.35.0",
        "webpack-cli": "^3.3.5",
        "webpack-dev-server": "^3.7.2",
        "zhen-check": "^1.4.0"
      }
    }

    然后,利用在命令行工具使用npm adduser 输出登录的账号和密码,然后使用npm publish发布。

    以上完成。

    开发过程中有几个注意事项:

    1,之所以可以通过import的方式引入,是通过package.js文件的main连接的,所以main后面要写插件的导出文件

    2,webpack.config.js配置文件里面,output的配置

      output: {
            path: path.resolve(__dirname, 'dist'),
            filename: '[name].js',
            libraryTarget: "umd",  //一套完整的规范 cmd  amd 
        }
    
    libraryTarget 配置为umd。允许amd,cmd规则引入

     

  • 相关阅读:
    SEO优化技巧:16个方法优化网页中的图片
    《Google官方SEO指南》十一:以恰当的方式推广你的网站
    ASP.NET Eval如何进行数据绑定
    浅析ASP.NET页面缓存的几点体会
    浅谈ADO.NET中的五个主要对象
    WCF 入门 WCF基础知识问与答
    Hibernate第一次课(1)
    谷歌、雅虎支持中文域名搜索 有助提升SEO
    告诉SEO初学者:百度收录并非终极目标
    WF 创建 SQL 持久性数据库
  • 原文地址:https://www.cnblogs.com/zhensg123/p/11111198.html
Copyright © 2011-2022 走看看