我一直试图通过WebPack加载一个jquery插件。这个插件被打包为一个npm模块,在它的依赖项中只包括jQuery。我认为webpack会加载jquery实例,而不是使用我在全局上提供ProvidePleugin的实例。我尝试了另一篇stackoverflow文章(在webpack中管理jQuery插件依赖项)中提供的所有解决方案,但它们没有成功;结果总是一样的:“TERMINAL()不是函数”。如果我手动修改node_modules文件夹中的包,删除package.json中的jquery依赖项和node_modules插件文件夹中下载的依赖项,webpack成功地将插件与jquery的全局实例绑定。我知道,我可以简单地对该包做一个分叉,并使用一个私有的npm存储库,但我想使用正式的包。
这是我的webpack配置:
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var moment = require('moment');
var path = require('path');
var environment = process.env.APP_ENVIRONMENT || 'dev';
module.exports = {
entry: {
'app': './src/main.ts',
'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts'
},
/*devtool: 'source-map',*/
output: {
path: './dist',
filename: '[name].browser.' + moment().format('DDMMYYYYHHmm') + '.js'
},
module: {
loaders: [
{ test: /\.component.ts$/, loader: 'ts!angular2-template' },
{ test: /\.ts$/, exclude: /\.component.ts$/, loader: 'ts' },
{ test: /\.html$/, loader: 'raw-loader' },
{ test: /\.css$/, include: path.resolve('src/app'), loader: 'raw-loader' },
{
test: /\.css$/, exclude: path.resolve('src/app'), loader: ExtractTextPlugin.extract('style', 'css', {
fallbackLoader: "style-loader",
loader: "css-loader"
})
},
{ test: /\.(png|jpe?g|gif|ico)$/, loader: 'file?name=fonts/[name].[ext]' },
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff&name=fonts/[name].[ext]" },
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff&name=fonts/[name].[ext]" },
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream&name=fonts/[name].[ext]" },
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file?name=fonts/[name].[ext]" },
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml&name=fonts/[name].[ext]" },
]
},
resolve: {
extensions: ['', '.js', '.ts', '.html', '.css']
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: ['vendor', 'polyfills']
}),
new HtmlWebpackPlugin({
template: './src/index.html'
}),
new webpack.DefinePlugin({
app: {
environment: JSON.stringify(environment),
config: JSON.stringify(require('./profile/' + environment + ".profile.js"))
}
}),
new CleanWebpackPlugin(
['dist']
),
new CopyWebpackPlugin([
{ from: './src/images', to: 'images' }
]),
new ExtractTextPlugin('[name].browser.css'),
new webpack.optimize.UglifyJsPlugin({ minimize: true }),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
})
]
};
这里是jQuery.Terminal package.json:
{
"_args": [
[
{
"raw": "jquery.terminal@0.11.11",
"scope": null,
"escapedName": "jquery.terminal",
"name": "jquery.terminal",
"rawSpec": "0.11.11",
"spec": "0.11.11",
"type": "version"
},
"/home/giovanni/Projects/Private/site"
]
],
"_from": "jquery.terminal@0.11.11",
"_id": "jquery.terminal@0.11.11",
"_inCache": true,
"_installable": true,
"_location": "/jquery.terminal",
"_nodeVersion": "4.2.6",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/jquery.terminal-0.11.11.tgz_1475868856610_0.3736777463927865"
},
"_npmUser": {
"name": "jcubic",
"email": "jcubic@onet.pl"
},
"_npmVersion": "3.5.2",
"_phantomChildren": {},
"_requested": {
"raw": "jquery.terminal@0.11.11",
"scope": null,
"escapedName": "jquery.terminal",
"name": "jquery.terminal",
"rawSpec": "0.11.11",
"spec": "0.11.11",
"type": "version"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/jquery.terminal/-/jquery.terminal-0.11.11.tgz",
"_shasum": "eaeed2f8f305ac0477d71ef492e7d98d6064d812",
"_shrinkwrap": null,
"_spec": "jquery.terminal@0.11.11",
"_where": "/home/giovanni/Projects/Private/site",
"author": {
"name": "Jakub Jankiewicz",
"email": "jcubic@onet.pl",
"url": "http://jakub.jankiewi.cz"
},
"bugs": {
"url": "https://github.com/jcubic/jquery.terminal/issues"
},
"dependencies": {
"jquery": "^2.1.4"
},
"description": "jQuery Terminal Emulator is a plugin for creating command line interpreters in your applications.",
"devDependencies": {
"istanbul": "^0.4.3",
"jasmine": "^2.4.1",
"jasmine-node": "^1.14.5",
"jsdom": "^3.1.2"
},
"directories": {},
"dist": {
"shasum": "eaeed2f8f305ac0477d71ef492e7d98d6064d812",
"tarball": "https://registry.npmjs.org/jquery.terminal/-/jquery.terminal-0.11.11.tgz"
},
"gitHead": "0f2e55a6501d96aa17d42e4fcc071fab906309d8",
"homepage": "http://terminal.jcubic.pl",
"keywords": [
"terminal",
"emulator",
"prompt",
"console",
"keyboard",
"type",
"rpc",
"input",
"ui"
],
"license": "MIT",
"main": "js/jquery.terminal-0.11.11.js",
"maintainers": [
{
"name": "jcubic",
"email": "jcubic@onet.pl"
}
],
"name": "jquery.terminal",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/jcubic/jquery.terminal.git"
},
"scripts": {},
"version": "0.11.11"
}
我通过稍微修改我的Webpack配置来解决我的问题。正如这里所建议的(管理webpack中的jQuery插件依赖项),我添加了一个jQuery别名。在所提供的示例中,别名是静态指定的,它对我不起作用。我切换到一个动态值,这就解决了问题。
这里是片段:
alias: {
'jquery': path.resolve(path.join(__dirname, 'node_modules', 'jquery'))
},
本文向大家介绍创建自己的jquery表格插件,包括了创建自己的jquery表格插件的使用技巧和注意事项,需要的朋友参考一下 在模仿easyui的dataGrid表格插件的同时,自己去封装了一个。实现了基本的json数据的动态加载,自动分页,全选全不选,鼠标悬浮变色,隔行变色等 由于涉及到ajax访问,所以必须部署到iis上才能看出效果,先给大家看一下效果图: css样式 JSON文件 jquery
本文向大家介绍编写自己的jQuery提示框(Tip)插件,包括了编写自己的jQuery提示框(Tip)插件的使用技巧和注意事项,需要的朋友参考一下 对jQuery相信很多同学和我一样平时都是拿来主义,没办法,要怪只能怪jQuery太火了,各种插件基本能满足平时的要求。但是这毕竟不是长久之道,古人云:“授之以鱼,不如授之以渔”。 为了方便之前没有接触的同学,先来回顾一下jQuery的插件机制吧。 其
本文向大家介绍自己动手手写jQuery插件总结,包括了自己动手手写jQuery插件总结的使用技巧和注意事项,需要的朋友参考一下 jQuery是继Prototype之后的又一款优秀的JavaScript框架,深受广大开发者热爱,用户甚广。而jQuery一个很好的地方在 于用户的自定义,即我们可以书写自己的插件来完善jQuery的各项功能,定制自己所需要的功能,剔除冗余的代码,在页面加载时候可以有一定
本人一直很想自己造个 jQuery 的小库,第一是满足下自己,第二是去体验下 jQuery 内部的基情。
前面几节我们学习了 Gradle 的任务及命令,通过这几节的学习我们已经有了一定的 Gradle 基础,今天我们就来学习一下如何自定义一款 Gradle 插件。我们为什么要自定义 Gradle 插件呢?那当然是为了我们开发方便呀。如果吃力不讨好谁会去做呢。下面我们进入正题。 Gradle 插件主要分为两类:脚本插件和对象插件。下面我们来看下它们的区别。 1. 脚本插件 脚本插件就是我们在.grad
问题内容: 当使用并提供一个相当通用的资源名称(如)时,Java可能会从CLASSPATH前面列出的另一个JAR文件中加载资源,但可能与我的应用程序完全无关。有没有一种方法可以强制ClassLoader 首先 尝试从我的课程所在的同一JAR文件中加载资源,并且只有在未找到的情况下,才可以在CLASSPATH上查找其他JAR? 问题答案: 另外,如果您知道文件所在的确切jar,则可以使用JarURL