如何通过将pug,sass和js解析为最终的html,css和js2015来构建静态网站?

时间:2018-03-19 00:50:34

标签: javascript sass static pug

我已经完成了一些Node.js工作,但现在有些"客户端"我已经要求我创建一个静态页面,就像要在GitHub gh-pages上托管一样,并且有一些静态导航,但我想用pug,sass和js构建它。我已尝试过一些webpack配置,但版本4似乎遇到了一些插件的问题。任何想法,项目,发电机或任何东西将不胜感激。

感谢。亚历

例如,我已经提出了这个webpack配置,如果有人能做得更好会非常好。

const path = require('path');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
  entry: './src/app.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'app.js'
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          fallbackLoader: 'style-loader',
          loader: ['css-loader', 'sass-loader'],
          publicPath: '/dist'
        })
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: 'babel-loader'
      },
      {
        test: /\.pug$/,
        use: [
          'file-loader?name=[name].html',
          'pug-html-loader?pretty&exports=false'
        ]
      }
    ]
  },
  devServer: {
    contentBase: path.join(__dirname, 'dist'),
    compress: false,
    port: 3030,
    stats: 'errors-only'
  },
  plugins: [
    new ExtractTextPlugin({
      filename: 'styles.css',
      disable: false,
      allChunks: true
    })
  ]
};

1 个答案:

答案 0 :(得分:0)

保持简单并使用命令行工具,通过package.json中的脚本。这是一个例子

"scripts":{
    "start": "http-server -o -c-1",
    "build-sass": "node-sass scss/style.scss style.css",
    "watch-sass": "npm run build-sass && onchange 'scss/*' -- npm run build-sass",
    "watch-js": "watchify js/main.js -o bundle.js -v",
    "build-js": "browserify js/main.js -t [ babelify --presets [ env ] ] | uglifyjs -c -m > bundle.js",
    "build": "npm run build-sass && npm run build-js",
    "dev": "npm run watch-sass & npm run watch-js & npm start"
},
"dependencies": {
    "babel-core": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babelify": "^8.0.0",
    "browserify": "^16.1.0",
    "http-server": "^0.11.0",
    "node-sass": "^4.7.2",
    "onchange": "^3.3.0",
    "uglify-es": "^3.3.9",
    "watchify": "^3.10.0"
}

对于一个大项目,你可能想要更复杂的东西,但这对我来说大部分时间都适用。