1. Decide if the core of the site is undoable without JavaScript. Something like Google Docs or games relying heavily on Canvas/WebGL are prime examples. It is very rare for this to be the case, but if it is then disregard the rest of the steps.
2. Build the entire site without even considering JavaScript as an option. The advantage of this is I can finish all functionality without opening my browser window once. I build out the core with unit tests, and assert the base user workflow using integration tests that can simulate things like form submissions to route end-points. My test suite is now a constant confirmation that my site works with JavaScript disabled.
3. Open up the site in a browser, and begin the design & UX portion of development. Because the site is essentially feature-complete and tested already, I can have a lot of fun experimenting in this stage, tweaking things to my heart's content.
4. I slap this on the page after I'm satisfied with the enhanced UX that design and client-side scripting provides:
<div class="jsnotice">
We notice that you currently have Javascript disabled. While this site is fully accessible
without it, you're still missing out on some pretty neat features. We work tirelessly
to ensure that our scripts are small, unobtrusive, and do not harm your user experience.
Please add us to your whitelist, or <a href="//enable-javascript.com/">enable Javascript in your browser</a>!
</div>
Using Modernizr, that class only shows if JavaScript is disabled. The message itself is unobtrusive, and I always provide a way for the user to dismiss it permanently. If I want, I go into a little bit of detail on what "features" they're not experiencing fully.