npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

purescript-brunch

v1.1.1

Published

PureScript compiler for Brunch

Downloads

8

Readme

#+title: purescript-brunch

  • JavaScript Obfuscator plugin for Brunch

    Add [[https://purescript.org][PureScript]] supports for Brunch.

  • Feature

    • Automatically download the PureScript toolchain (=purs= and =psc-package=), with configurable version
    • Compile and bundle PureScript source into JS module
    • Skip foreign module files
  • Usage

    Install the plugin via =npm=:

    #+BEGIN_SRC sh npm install --save-dev purescript-brunch #+END_SRC

    Or =yarn=:

    #+BEGIN_SRC sh yarn add -D purescript-brunch #+END_SRC

    To specify options, use =config.plugins.pureScript=.

    #+BEGIN_SRC js exports.plugins = { purescript: { version: '0.11.6', entryPoints: { 'src/Main.purs': 'app/main.js' } } } #+END_SRC

  • Roadmap

    • Seamless JS module integration. PureScript already compile into CJS module, so we should be able to compile individual files pretty easily, however we need to make sure DCE with bundle still works.
      • PS import NPM JS module: the npm deps are not recognized, manually require in the entry-point works great though
      • PS import user-defined module: probably not necessary
      • JS module import PS module
    • Test PureScript module import both user defined and NPM JS module
    • The problem now is that it only make sense for the PS to work with =entryPoints=, not as =joinTo= (concatenate).
    • Project skeleton
  • Motivations

    I've been looking at various build system to integrate PureScript into my frontend workflow. The goals are:

    • Simple - preferably zero - configuration
    • Works with =psc-package=, since bower is now deprecated
    • Works with existing JavaScript ecosystem. We should be able to require NPM modules in our foreign definitions.
    • Google Closure Compiler friendly.

    The solution seems to involve at least two steps build:

    • compile =.purs= files into =.js= (basically psc-package build)
    • bundle the =.js= files from previous step (basically purs bundle)
    • bundle with NPM dependencies

    If the module bundler support CommonJS module AND NPM module resolution then step 2 and 3 can be combined.

    The impression with existing tools so far:

    • Pulp: the recommended way, the output code by Browserify is not minifier friendly, and it can not build any other kind of assets.
    • psc-package + purs bundle: does not support NPM module
    • psc-package + purs bundle + google-closure-compiler: google-closure-compiler can be used to bundle NPM modules, however the dependency files need to be resolve and include as =--js= argument manually, which is not really practical.
    • grunt-purescript: does not support NPM module, grunt is kind of bad regarding multi-step build
    • gulp: not tried, probably same as grunt, complex configuration
    • webpack: complex configuration
    • parcel: custom module format similar to Browserify, not Google Closure Compiler friendly
    • brunch: the foreign module gets concatenate with all the other files
  • License

    Copyright 2017 Tung Dao

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.