Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AMD2CMD Webpack Plugin

此插件会把webpack打包的amd库输出为cmd库。

Installation

Install the plugin with npm:

$ npm install amd2cmd-webpack-plugin --save-dev

Usage

var Amd2CmdWebpackPlugin = require('amd2cmd-webpack-plugin')
var webpackConfig = {
    entry: {
        // ...
    },
    externals: {
        jquery: '$',
        // ...
    },
    output: {
        // ...
        libraryTarget: 'amd'
    },
    plugins: [
        new Amd2CmdWebpackPlugin(),
        // ...
    ]
};

编译结果如下:

define(function(require, cmdExports, cmdModule) {
    var __WEBPACK_EXTERNAL_MODULE_70__ = require('$');
    cmdModule.exports = /**** webpack source ****/;
});

API

  • id {String} 插件会把传入的id值与模块名拼接成dependencies参数。
var webpackConfig = {
    // ...
    entry: {
        webpack-plugin: ''
    },
    externals: {
        jquery: '$',
        // ...
    },
    plugins: [
        new Amd2CmdWebpackPlugin({
            id: '../amd2cmd/'
        }),
        // ...
    ]
};

编译结果如下:

define('../amd2cmd/webpack-plugin', ["$"], function(require, cmdExports, cmdModule) {
    // ...
});
  • globalExternals {Object} 插件会把globalExternals中的依赖引入方式从require函数方式引入改为全局变量引入。
var webpackConfig = {
    // ...
    externals: {
        jquery: '$',
        // ...
    },
    plugins: [
        new Amd2CmdWebpackPlugin({
            globalExternals: {
                jquery: '$'
            }
        }),
        // ...
    ]
};

编译结果如下:

define(function(require, cmdExports, cmdModule) {
    var __WEBPACK_EXTERNAL_MODULE_70__ = window.$;
    // ...
});

Configuration

为了支持js concat 和 ie (version 6-9),require标识符需要被保留,详见CMD官方说明.

你可以通过配置UglifyJsPlugin保留require标识符,然后使用CMD构建工具去生成iddependencies

var Amd2CmdWebpackPlugin = require('amd2cmd-webpack-plugin')
var UglifyJsPlugin = require('uglifyjs-webpack-plugin')
var webpackConfig = {
    // ...
    mode: 'production',
    optimization: {
        minimizer: [
            new UglifyJsPlugin({
                uglifyOptions: {
                    mangle: {
                        reserved: ['require'],
                    }
                }
            })
        ]
    },
    plugins: [
        new Amd2CmdWebpackPlugin({
            globalExternals: {
                lodash: '_'
            }
        })
    ]
};

License

This project is licensed under MIT.

About

Transform AMD module library into CMD module built by webpack

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages