zoukankan      html  css  js  c++  java
  • webpack七探-库打包

    当我们编写了一个库(library.js),需要进行打包给别人使用,那么别人可能使用的方式有:

    import library from 'library';
    const library=require('library);
    require(['library'], function(){});

    所以我们打包生成的代码要让用户在commonJS的环境还是AMD的环境都可以使用,那么我们需要在output中进行配置:

    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'library.js',
        libraryTarget:'umd'     // 这是通用的意思,不管以什么形式都可以正确引入
    }

    如果还想用script标签的形式引入并使用:

    <script src='library.js'></script>

    用法: library.func

    那么我们还需要配置:

    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'library.js',
        library:'library',      // 后面的library是指全局变量名称
        libraryTarget:'umd'
    }

    当我们修改配置:

    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'library.js',
        library:'library',      // 后面的library是指全局变量名称
        libraryTarget:'this'    // 或者'window',如果是node环境,需要改成'global',一般情况下都会填个umd
    }

    这个时候就不支持commonJS和AMD的引入形式,只能从window或者this中获取,可以在控制台输出测试。

    还有一种情况:当我们编写的库中引入了一个库(如lodash),而我们的项目中也使用了该库,那么就会造成打包两次lodash,那么我们就需要将其忽略:

    externals:['lodash'],

    意思是碰到lodash这个库的时候不将其打包。 除了数组形式,我们还可以使用对象的形式进行配置:

    externals:{
        commonjs:'lodash'
    }

    意思是当我们使用commonJS的形式使用lodash库时,必须使用lodash这个名字,而不能使用其他名字:

    const lodash=require('lodash');     // 正确
    const _=require('lodash');          // 错误

    还可以配置成:

    externals:{
        root:'_'
    }

    意思是当我们以script标签引入时,必须全局注入'_',下面的 const lodash=require('lodash'); 才能正确引入。 一般在没有特殊要求的情况下,我们只需要配置成:

    externals:{
        lodash:'lodash'
    }

    我们实际想要做成库的文件是dist目录下的library.js,所以需要在package.json中修改:"main": "./dist/library.js", 然后去npm网站上注册一个账号,使用命令行:

    npm adduser xxx xxx
    npm publish xxx

    步骤自行百度

  • 相关阅读:
    c3p0连接池c3p0-config.xml配置文件各属性的意义
    MVC案例-架构分析
    jsp中文乱码
    JSP标签
    JSP_include指令
    JavaWeb_请求转发
    JavaWeb_域对象的属性操作
    JavaWeb_JSP语法
    345. Reverse Vowels of a String
    541. Reverse String II
  • 原文地址:https://www.cnblogs.com/jingouli/p/12335837.html
Copyright © 2011-2022 走看看