需求場景: 但願經過一個webpack文件夾管理多個站點的打包流程.css
假設如今我要爲站點domain
配置打包流程.vue
你懂得node
vim ~/.npmrc registry = https://registry.npm.taobao.org
mysql.server start
mysql -uroot -p
mysql
css
和js
, 這兩個文件夾存放公共的css和js模塊.dist/xxx
文件夾下www/xxx
文件夾下.. ├── css │ ├── bar.css │ ├── bar.scss │ └── foo.scss ├── dist │ └── domain ├── js │ ├── bar.coffee │ └── foo.js ├── node_modules │ ├── package.json ├── webpack.config.js └── www └── domain ├── entry.js └── webpack.config.js
命令: webpack --config www/domain/webpack.config.js
jquery
// ./www/domain/webpack.config.js var webpack = require("webpack"); var path = require('path'); module.exports = { resolve: { root: [ path.resolve('./css'), path.resolve('./js'), ], extensions: ["", ".js", ".coffee"], }, entry: "./www/domain/entry.js", output: { path: 'dist/domain', publicPath: '/static/', filename: "domain.[hash].js", }, module: { loaders: [ { test: /\.vue$/, loader: 'vue', }, { test: /\.css$/, loaders: ["style", "css"], }, { test: /\.scss$/, loaders: ["style", "css", "sass"], }, { test: /\.coffee$/, loader: "coffee-loader", }, ], }, };
實際上, webpack.config.js
文件也能夠放在根目錄下, 而且經過命令行向它傳入一些參數
這個時候命令能夠等效爲:webpack --domain domain
webpack
// ./webpack.config.js var webpack = require("webpack"); var path = require('path'); var argv = require('yargs').argv; var domain = argv.domain || 'default'; module.exports = { resolve: { root: [ path.resolve('./css'), path.resolve('./js'), ], extensions: ["", ".js", ".coffee"], }, entry: "./www/" + domain + "/entry.js", output: { path: 'dist/' + domain, publicPath: '/static/', filename: domain + ".[hash].js", }, externals: { // "jquery": "$", }, plugins: [ // new webpack.ProvidePlugin({$:'jquery', jQuery:'jquery'}), ], module: { // preLoaders: [ // { // test: /\.js$/, // loader: 'eslint', // exclude: [/node_modules/], // }, // ], loaders: [ { test: /\.vue$/, loader: 'vue', }, { test: /\.css$/, loaders: ["style", "css"], }, { test: /\.scss$/, loaders: ["style", "css", "sass"], }, { test: /\.coffee$/, loader: "coffee-loader", }, // {test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'}, // {test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'}, // {test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'}, // {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'}, ], }, };
npm install -g webpack coffee-script
web
{ "name": "pack", "version": "1.0.0", "scripts": { "domain": "webpack --config www/domain/webpack.config.js" }, "devDependencies": { "coffee-loader": "^0.7.2", "coffee-script": "^1.11.1", "crypto-js": "^3.1.8", "css-loader": "^0.25.0", "file-loader": "^0.9.0", "node-sass": "^3.11.2", "sass-loader": "^4.0.2", "style-loader": "^0.13.1", "url-loader": "^0.5.7", "vue": "^2.0.5", "vue-loader": "^9.8.1", "webpack": "^1.13.3" } }