【发布时间】:2017-10-02 14:44:39
【问题描述】:
主要问题:如何使用 babel 预设 es2015、babel-polyfill 和 babelify 将我当前的情况转换为 webpack.config.json ?
我用过 Bower,我的 bower.json 文件是这样的:
"dependencies": {
"adminlte": "almasaeed2010/AdminLTE#2.4.0-alpha",
"jquery": "^3.2.1",
"font-awesome": "^4.7.0",
"Ionicons": "ionicons#^2.0.1",
"lobibox": "^1.2.4",
"moment-timezone": "^0.5.12",
"eonasdan-bootstrap-datetimepicker": "https://github.com/Eonasdan/bootstrap-datetimepicker.git#^4.17.47",
"bootstrap-table": "^1.11.1",
"parsleyjs": "^2.7.0",
"bootstrap-daterangepicker": "https://github.com/dangrossman/bootstrap-daterangepicker.git#2.1.25",
"socket.io-client": "^1.7.2",
"jquery-confirm2": "^3.2.0",
"push.js": "^0.0.13",
"lodash": "^4.17.4",
"tableExport.jquery.plugin": "^1.8.2"
}
我加载的js文件如下:
<!-- jQuery 3.X -->
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap 3.3.6 -->
<script src="/bower_components/adminlte/bootstrap/js/bootstrap.min.js"></script>
<!-- FastClick -->
<script src="/bower_components/adminlte/plugins/fastclick/fastclick.js"></script>
<!-- Lobibox Notifications -->
<script src="/bower_components/lobibox/dist/js/notifications.min.js"></script>
<!-- AdminLTE App -->
<script src="/bower_components/adminlte/dist/js/app.min.js"></script>
<!-- Moment.js -->
<script src="/bower_components/moment/moment.js"></script>
<!-- Moment.js Local => FR -->
<script src="/bower_components/moment/locale/fr.js"></script>
<!-- Moment.js Timezone -->
<script src="/bower_components/moment-timezone/builds/moment-timezone-with-data.min.js"></script>
<!-- DatePicker -->
<script src="/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"></script>
<!-- Date Range Picker -->
<script src="/bower_components/bootstrap-daterangepicker/daterangepicker.js"></script>
<!-- Select2 -->
<script src="/bower_components/adminlte/plugins/select2/select2.full.min.js"></script>
<!-- Parsley Validation -->
<script src="/bower_components/parsleyjs/dist/parsley.min.js"></script>
<!-- Parsley Validation language -->
<script src="/bower_components/parsleyjs/dist/i18n/fr.js"></script>
<!-- Bootstrap Table -->
<script src="/bower_components/bootstrap-table/dist/bootstrap-table.min.js"></script>
<!-- Bootstrap Table Local language-->
<script src="/bower_components/bootstrap-table/dist/locale/bootstrap-table-fr-BE.min.js"></script>
<!-- Bootstrap Table : Export -->
<script src="/bower_components/bootstrap-table/dist/extensions/export/bootstrap-table-export.min.js"></script>
<script src="/bower_components/tableExport.jquery.plugin/tableExport.min.js"></script>
<!-- jquery-confirm -->
<script src="/bower_components/jquery-confirm2/dist/jquery-confirm.min.js"></script>
<!-- Socket.io Client -->
<script src="/bower_components/socket.io-client/dist/socket.io.js"></script>
<!-- Lodash -->
<script src="/bower_components/lodash/dist/lodash.min.js"></script>
<!-- Push Js -->
<script src="/bower_components/push.js/push.min.js"></script>
<!-- Google Chart -->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<!-- All my JS to enable interaction -->
<script src="/dist/js/unitedJs.js"></script>
警告:unitedJs.js 是所有自定义 Js 合并在一起。我可以轻松地使它们与 webpack 2 兼容(对于“入口”,我有一个 main.js)。
我的 gruntfile(用于创建这个 unitedJs.js):
const gulp = require('gulp');
const babel = require('gulp-babel');
const concat = require('gulp-concat');
const sourcemaps = require('gulp-sourcemaps');
const Path = require("path");
// default babel-polyfill require : .../lib/index.js
// Goal : ../dist/polyfill.min.js
// If you really want to know WHY I must do this : check https://github.com/babel/gulp-babel/issues/27
let polyfillPath = Path.relative(__dirname, Path.join(require.resolve("babel-polyfill"), "../..", "dist/polyfill.min.js"));
gulp.task('js', function () {
return gulp.src(['public/js/*.js', polyfillPath])
.pipe(sourcemaps.init())
.pipe(babel({
presets: ['es2015']
}))
.pipe(concat('unitedJs.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('public/dist/js'));
});
// Watch Files For Changes
// Thanks https://travismaynard.com/writing/getting-started-with-gulp
gulp.task('watch', function () {
gulp.watch('public/js/*.js', ['js']);
});
gulp.task('default', ['js', 'watch']);
PS:我已经在这里阅读了一些帖子,但没有找到答案:
Managing jQuery plugin dependency in webpack
https://webpack.github.io/docs/usage-with-bower.html(我知道这是 webpack 1 文档,但我在 V2 文档中没有找到它)
Webpack with bower support
【问题讨论】:
-
对不起,如果我忘记了“你好”,我的编辑在这里不起作用^^
-
如果你回答我的问题,我愿意为你提供赏金:没有痛苦就没有收获
-
能否请您包含您的 webpack 配置,所有这些脚本标签表明您没有利用 webpack 的全部功能。
-
我是 webpack 的新手,所以认为是空的 =)。
-
这是一项巨大的努力,但可以做到。这将需要很多时间。
标签: webpack gulp babeljs webpack-2