源代码和演示的组织
Organization for source code and demos
我正在开发一个 JavaScript 库 (repository here),它包括目录 lib/
中的源代码和目录 demos/examples 中的一些源代码12=]。一些演示以及库的整个源代码 必须通过 Webpack ,因为它们必须通过 Babel(因为我使用的是 ECMAScript 6)。
但是,我不确定我是否应该只为演示和源代码提供 webpack 配置文件,因为这样我认为我无法使我的库输出成为单个 JavaScript 文件.因为库本身由多个文件组成,所以它有各种入口点(Sprite、SpriteList 和 Game)。然后将它们放在单个输出文件中,我希望将它们合并。我知道我可以同时使用 Webpack 和 Gulp 来实现这一点,但我不确定这是否是正确的方法。
简而言之,我正在寻找的是组织我的构建配置的最佳选择(一个 webpack 文件与两个 webpack 文件,第二个在 demos/
目录中)以及 webpack 与 webpack+ gulp.
虽然理想情况下,我会简单地调整我的配置文件并能够仅使用 Webpack 为我的库输出生成一个文件,但我认为这是不可能的。
配置文件如下:
import path from 'path';
export default {
entry: {
Sprite: "./lib/Sprite.js",
SpriteList: "./lib/SpriteList.js",
Game: "./lib/Game.js",
HelicopterDemo: "./demos/helicopter_game/PlayState.js",
CircleExample: "./demos/circle_example/PlayState.js"
},
output: {
path: __dirname,
filename: "./build/[name].js",
library: ["Pentagine", "[name]"],
libraryTarget: "umd"
},
module: {
loaders: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
]
},
resolve: {
root: [
path.resolve('./lib/')
]
},
externals: {
"underscore": "underscore"
}
};
您可以使用一个 JS 文件将您的主要入口点合并为一个,只需列出所有入口点,例如main.js:
require('./lib/Sprite.js');
require('./lib/SpriteList.js);
require('./lib/Game.js');
因此您可以将其用作 webpack 配置中的主要入口点:
entry: {
Main: "./main.js",
HelicopterDemo: "./demos/helicopter_game/PlayState.js",
CircleExample: "./demos/circle_example/PlayState.js"
}
我正在开发一个 JavaScript 库 (repository here),它包括目录 lib/
中的源代码和目录 demos/examples 中的一些源代码12=]。一些演示以及库的整个源代码 必须通过 Webpack ,因为它们必须通过 Babel(因为我使用的是 ECMAScript 6)。
但是,我不确定我是否应该只为演示和源代码提供 webpack 配置文件,因为这样我认为我无法使我的库输出成为单个 JavaScript 文件.因为库本身由多个文件组成,所以它有各种入口点(Sprite、SpriteList 和 Game)。然后将它们放在单个输出文件中,我希望将它们合并。我知道我可以同时使用 Webpack 和 Gulp 来实现这一点,但我不确定这是否是正确的方法。
简而言之,我正在寻找的是组织我的构建配置的最佳选择(一个 webpack 文件与两个 webpack 文件,第二个在 demos/
目录中)以及 webpack 与 webpack+ gulp.
虽然理想情况下,我会简单地调整我的配置文件并能够仅使用 Webpack 为我的库输出生成一个文件,但我认为这是不可能的。
配置文件如下:
import path from 'path';
export default {
entry: {
Sprite: "./lib/Sprite.js",
SpriteList: "./lib/SpriteList.js",
Game: "./lib/Game.js",
HelicopterDemo: "./demos/helicopter_game/PlayState.js",
CircleExample: "./demos/circle_example/PlayState.js"
},
output: {
path: __dirname,
filename: "./build/[name].js",
library: ["Pentagine", "[name]"],
libraryTarget: "umd"
},
module: {
loaders: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
]
},
resolve: {
root: [
path.resolve('./lib/')
]
},
externals: {
"underscore": "underscore"
}
};
您可以使用一个 JS 文件将您的主要入口点合并为一个,只需列出所有入口点,例如main.js:
require('./lib/Sprite.js');
require('./lib/SpriteList.js);
require('./lib/Game.js');
因此您可以将其用作 webpack 配置中的主要入口点:
entry: {
Main: "./main.js",
HelicopterDemo: "./demos/helicopter_game/PlayState.js",
CircleExample: "./demos/circle_example/PlayState.js"
}