Mat*_*nik 7 javascript web webpack babeljs
我有以下目录结构...
\n\nroot\n\xe2\x94\x82 package.json\n\xe2\x94\x82 webpack-client.config.js\n\xe2\x94\x82 webpack-server.config.js\n\xe2\x94\x82 yarn.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80assets\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80js\n\xe2\x94\x82 index.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dist\n\xe2\x94\x82 \xe2\x94\x82 header.html\n\xe2\x94\x82 \xe2\x94\x82 hotel-details.html\n\xe2\x94\x82 \xe2\x94\x82 hotel-list.html\n\xe2\x94\x82 \xe2\x94\x82 index.html\n\xe2\x94\x82 \xe2\x94\x82 server.js\n\xe2\x94\x82 \xe2\x94\x82 \n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80static\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80j\n\xe2\x94\x82 index.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80node_modules\n\xe2\x94\x82 \xe2\x94\x94...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80server\n\xe2\x94\x82 database.js\n\xe2\x94\x82 index.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80views\n header.html\n hotel-details.html\n hotel-list.html\n index.html\n
Run Code Online (Sandbox Code Playgroud)\n\n我想使用 Webpack 来做两件事。
\n\nminify 和捆绑服务器端 JS - 导出捆绑包以dist/server.js
用作server/index.js
入口点。我已经使用webpack-server.config.js
下面提供的实现了这一点。
缩小每个views/*.html
文件并将其导出到dist/v/*.html
. 如果html
文件有<script>
标签,我想从这些文件创建缩小的捆绑包并将它们导出到dist/static/j/[html_filename].js
.
.html
文件并将其.js
文件导出到dist/static/j/[html_filename].js
. 但是,我无法使用html 中的文件,因为它使用类似or 的.js
语法。我已经提供了 和 的内容。require
import
assets/js/index.js
dist/static/j/index.js
webpack-client.config.js
var path = require("path");\nvar fs = require("fs");\n\nvar htmlFiles = {}; \nfs.readdirSync(path.join(__dirname, \'views\'))\n .filter(f => (path.parse(f).ext.toLowerCase() === \'.html\'))\n .forEach(f => {\n var name = path.parse(f).name;\n htmlFiles[name] = path.join(__dirname, \'views\', f);\n });\n\nmodule.exports = {\n module: {\n rules: [\n { \n test: /\\.html$/, \n use: [\n { loader: \'file-loader\', options: { name: \'[name].[ext]\', emitFile: true }},\n { loader: \'extract-loader\' },\n { \n loader: \'html-loader\',\n options: { \n minimize: true,\n attrs: [\'script:src\']\n }\n },\n ]\n },\n {\n test: /\\.js$/,\n use: [\n { \n loader: \'file-loader\', \n options: { \n name: \'static/j/[name].[ext]\',\n publicPath: (p) => p.replace(\'static/\', \'\')\n }\n },\n {\n loader: \'babel-loader\',\n options: {\n presets: [\n [\n "babel-preset-env", {\n "targets": {\n "chrome": 52\n }\n }\n ]\n ]\n }\n },\n ]\n }\n ]\n },\n target: \'web\',\n watch: true,\n entry: htmlFiles,\n output: {\n path: path.join(__dirname, "dist"),\n filename: \'[name].html.js\'\n }\n};\n
Run Code Online (Sandbox Code Playgroud)\n\nwebpack-server.config.js
var path = require("path");\nvar fs = require("fs");\nconst MinifyPlugin = require(\'babel-minify-webpack-plugin\');\n\nvar nodeLibs = {};\nfs.readdirSync(path.join(__dirname, \'node_modules\'))\n .filter(x => x !== \'.bin\')\n .forEach(mod => { nodeLibs[mod] = \'commonjs \' + mod; });\n\nmodule.exports = {\n externals: nodeLibs,\n\n module: {\n rules: [\n {\n test: /\\.js$/,\n use: {\n loader: \'babel-loader\',\n options: {\n presets: [\'babel-preset-env\']\n }\n }\n }\n ] \n },\n plugins: [\n new MinifyPlugin()\n ],\n context: __dirname,\n entry: {\n server: "./server/index.js"\n },\n target: "node",\n output: {\n path: path.join(__dirname, "dist"),\n filename: "server.js"\n }\n};\n
Run Code Online (Sandbox Code Playgroud)\n\nassets/js/index.js
import $ from \'../../node_modules/jquery\';\n\nlet scrollEnabled = true;\n\nwindow.setScrollEnabled = (scrollEnabled) => {\n $(\'body\').css({backgroundColor: \'red\'});\n console.log(\'isScrollEnabled:\', scrollEnabled);\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
17741 次 |
最近记录: |